You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Flask应用至Railway时Gunicorn报ModuleNotFoundError求助

解决Railway部署Flask时Gunicorn找不到server模块的问题

问题原因

本地运行和IDE能正常工作,是因为它们自动把项目根目录(myproject)加入了Python的搜索路径(sys.path),所以server.sources这种导入能被解析。但Railway上执行Gunicorn时,默认是在server目录下启动,Python搜索路径里没有myproject目录,自然找不到server模块。

解决方案

方案1:修正导入语句(推荐)

因为app.py本身就在server目录下,直接导入同级的sources模块即可,不需要带上server前缀:

# 替换原来的导入语句
from sources.source_controller import SourceController

修改后,Procfile里的命令保持web: gunicorn app:app即可,无论在哪个目录运行都能正确解析导入。

方案2:调整Python路径,保留原导入语句

如果不想修改代码,可以在Gunicorn启动命令中指定项目根目录到Python路径:

  1. 打开server目录下的Procfile
  2. 将启动命令修改为:
web: PYTHONPATH=.. gunicorn app:app

PYTHONPATH=..会把server的父目录(也就是myproject)加入Python搜索路径,这样server模块就能被找到。

方案3:确认包结构完整性

确保sources目录下存在空的__init__.py文件,这是Python识别该目录为可导入包的必要条件。如果之前没加,创建这个文件后重新部署。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:29:56