Пакеты 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 сюда

Другие ответы:

Также, пожалуйста, смотрите здесь для подробного ответа о том, что происходит.

Другие вопросы по тегам