Публикация приложения Dash через Plotly Cloud — ModuleNotFoundError во время публикацииPython

Программы на Python
Ответить
Anonymous
 Публикация приложения Dash через Plotly Cloud — ModuleNotFoundError во время публикации

Сообщение Anonymous »

Я пытаюсь опубликовать приложение Dash через облако Plotly. Приложение работает без ошибок при запуске на локальном хосте, но когда я пытаюсь опубликовать приложение, я получаю ошибку ModuleNotFoundError относительно внутреннего импорта во время выполнения вplotly-cloud:

Код: Выделить всё

2026-01-27T08:42:50.067Z:   File "/home/appuser/app/app_factory.py", line 12, in 
2026-01-27T08:42:50.067Z:     from src.app.dashboard_logic import some_import
2026-01-27T08:42:50.067Z: ModuleNotFoundError: No module named 'src.app'
2026-01-27T08:42:50.067Z: [11] [INFO] Worker exiting (pid: 11)
Я использую Python v.3.13, Dash[cloud] v.3.3.0 и Gunicorn v.24.0.0. Я запускаю код с помощью uv на Mac. Соответствующие части моей файловой структуры следующие:

Код: Выделить всё

root_folder/
├── Procfile
├── main.py                                    # entry point for code is here
├── pyproject.toml
├── requirements.txt
├── src/
│   ├── __init__.py
│   ├── app/
│   │   ├── .DS_Store
│   │   ├── __init__.py
│   │   ├── app_factory.py
│   │   ├── components/
│   │   │   ├── __init__.py
│   │   │   ├── page_1.py
│   │   │   ├── page_2.py
│   │   │   └── etc.py
│   │   ├── dashboard_logic.py                 # ModuleNotFoundError is here
│   │   └── plotly-cloud.toml
└── uv.lock
Ошибка возникает при первом внутреннем импорте, вызываемом в app_factory, который я назвал абсолютным импортом следующим образом:

Код: Выделить всё

from src.app.dashboard_logic import some_import
Я думаю, проблема возникает из-за того, что main.py находится за пределами папки src и поэтому Gunicorn не может вызвать импорт. Я вызываю приложение с помощью этого кода в main.py:

Код: Выделить всё

from src.app.app_factory import create_dash_app

app = create_dash_app(*args)
app.run(debug=True, use_reloader=False, port=8051)
server = app.server
Я отдельно пробовал загружать импорт в файлы __init__.py в папках компонентов и app, а также использовать относительный импорт. Я попытался перефакторить код, чтобы main.py находился внутри папки src. Я попытался добавить папку src в путь python следующим образом:

Код: Выделить всё

current_dir = os.path.dirname(os.path.abspath(__file__))
src_path = os.path.join(current_dir, 'src')
if src_path not in sys.path:
sys.path.insert(0, src_path)
Во всех упомянутых выше попытках приложение работает без ошибок на локальном хосте, и только когда я пытаюсь опубликовать приложение черезplotly-cloud, я получаю сообщение об ошибке, упомянутое выше.
Можете ли вы помочь мне определить, почему это не работает и что я могу сделать, чтобы решить эту проблему?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... publishing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»