У меня есть приложение для колб со следующей структурой:
app/
__init__.py
myapp.py
common/
tool1.py
tool2.py
web/
__init__.py
views.py
api/
api_impl.py
worker/
__init__.py
worker.py
tasks.py
Я инициализирую в myapp.py
важный объект, который я использую в нескольких местах, и я могу получить к нему доступ из common/tool1.py
и web/api/api_impl.py
с from myapp import object
. Я смог использовать tool1
и tool2
в нескольких местах в web/
и myapp.py
при импорте с from common.tool1 import tool1_def
.
Другие важные факты в myapp.py
есть import web
оператор для чертежей и app/__init__.py
и worker/__init__.py
пусты. web/__init__.py
содержит определения чертежей для маршрутов.
Я могу без проблем запустить приложение с gunicorn, но когда я пытаюсь запустить моего работника с python app/worker/worker.py
, я получаю ошибку ModuleNotFoundError: No module named 'myapp'
. worker.py
пытается импортировать тот же объект, определенный в myapp.py
.
Я просто не понимаю, почему я могу запустить приложение, и оно работает, но когда я пытаюсь запустить работника, это не так! Я определенно не до конца понимаю систему импорта в этом случае, и все, что я прочитал онлайн, похоже, не совсем проясняет это.