Первоначально опубликовано в моем Блог Отказ
Этот пост является продолжением моего предыдущего поста: управление пакетом Python с Pipenv. У меня есть управление в пакете/зависимости на месте, теперь я хотел бы настроить структуру папки и заставить выполнение скриптов.
Моя заявление о проблеме состоит в том, что у меня нет основного сценария, который может вызвать любые модули для запуска. Время ко времени я выполняю любые сценарии из любой папки в отдельности, и у меня не должно быть никаких жестких зависимостей с любым файлом. Позвольте мне показать вам пример, который может легко объяснить мою проблему.
Рассмотрим следующую структуру папки, у меня сейчас есть:
__init__.py
Это специальный файл, который помогает Python относиться к папкам/файлам в качестве модуля. Например, __init__.py
Файл в общий/
Справочник делает его в виде модуля, поэтому пользователь может импортировать это в виде модуля в любом месте. И содержание __init__.py
Файл просто пусто.
Содержание моего Connange.py
очень просто:
ENDPOINT = "http://vimalselvam.com"
и Start.py
в SRC/DataStore/
каталог:
import common.constant as constant def run(): print(constant.ENDPOINT) if __name__ == " __main__": run()
Просто посмотрев на вышеуказанный код, вы думаете, что нет проблем в выполнении, верно? Это было не так. Давайте выполним и посмотрим, что происходит:
~ pipenv run python src/datastore/start.py Traceback (most recent call last): File "src/datastore/start.py", line 1, inimport common.constant as constant ModuleNotFoundError: No module named 'common'
Что случилось! Проблема в том, что Python не разрешает зависимости модулей, если вы выполняете файл, который не относительно текущего каталога. Так что вы должны выполнить Start.py
файл в виде модуля. Давайте сделаем это:
~ pipenv run python -m src.datastore.start http://vimalselvam.com
Попался! Я провел некоторое время, чтобы понять это и, следовательно, это как пост. Если вы нашли это полезно, пожалуйста, хотите и поделитесь.
Оригинал: “https://dev.to/email2vimalraj/python-module-management-53f”