Невозможно импортировать модуль из другого пакета - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть структура каталогов, подобная этой

conf
    __init__.py
    settings.py
    abc.conf
    def.conf
src
    main.py
    xyz.py

src Я решил не создавать пакет, а обычную папку.Я пытаюсь импортировать файл settings.py в main.py и выполняю все это с помощью команды python3 main.py

Мой оператор импорта в main.py: import conf.settings

я получаю ошибку No module named conf.settings и не могу обойти ее.

Python не может распознать conf как пакет?Могут ли пакеты содержать файлы, отличные от файлов .py (в моем случае файлы .conf)

1 Ответ

0 голосов
/ 09 февраля 2019

При импорте в Python ищите текущий каталог и sys.path.Поскольку ваш main.py находится в папке src, он не может видеть папку пакета conf.К счастью, вы можете обновить sys.path во время выполнения.

root
     conf
        __init__.py
        settings.py
     src
        main.py

Таким образом, вы можете добавить sys.path из main.py перед импортом conf модуля.Попробуйте выполнить следующее:

# main.py
import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))

from conf import settings
...

Другой способ - обновить PYTHONPATH напрямую и добавить путь к корневому каталогу скрипта.

...