Я работаю над приложением 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
Спасибо за помощь.
Ответ 1
Короче говоря, вы можете использовать только относительный импорт из самих импортированных пакетов.
Например, если у вас есть:
$ cat run.py
from app.module1 import main
main.main()
$ python run.py
Затем вы можете использовать относительный импорт в app/module1/main.py
(хотя это должно быть from ..core import foo
, потому что core/
- один уровень выше main.py
).
Ответ 2
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
таким образом
Также см. здесь, чтобы получить исчерпывающий ответ о том, что происходит.