Пакеты Python: относительный импорт
Я работаю над приложением Python, состоящим из ядра и нескольких независимых модулей, использующих ядро. У меня проблемы с настройкой относительного импорта пакетов.
app
|- __init__.py
|- core
|- __init__.py
|- corefile.py
|- module1
|- __init__.py
|- main.py
__init__.py
файлы пусты. Я использую Python 2.7.1.
main.py
from .core import *
Бег python main.py
результаты в ValueError: Attempted relative import in non-package
,
Подобные вопросы: окончательный ответ на относительный импорт Python, как сделать относительный импорт в Python? Относительный импорт в Python
Спасибо за помощь.
2 ответа
Короче говоря, вы можете использовать только относительный импорт из пакетов, которые сами импортированы.
Например, если у вас было:
$ cat run.py
from app.module1 import main
main.main()
$ python run.py
Тогда вы можете использовать относительный импорт в app/module1/main.py
(хотя это должно быть from ..core import foo
, так как core/
на один уровень выше main.py
).
import sys
abs_filepath = '/home/n/Documents/IMPORTANT/deep_learning/drori_2018/ final_proj/Ryans_branch/StackGAN/'
# insert your absolute filepath above as abs_filepath = '/path/to/targ/dir'
sys.path.append(abs_filepath)
Пожалуйста, исправьте это, если есть проблемы с выполнением import
сюда
Другие ответы:
Также, пожалуйста, смотрите здесь для подробного ответа о том, что происходит.