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

Python跨目录导包报错:ModuleNotFoundError: No module named 'config'

问题:Python跨目录模块导入失败(不使用PYTHONPATH或sys模块)

项目结构(含空__init__.py):

├── Dockerfile
├── app
│   ├── __init__.py
│   └── fct.py
└── config
    ├── __init__.py
    └── settings.py

app/fct.py中的导入代码:

from config.settings import sum_fct

Dockerfile内容:

FROM python:3.8
WORKDIR /application 
COPY . .
CMD ["python", "app/fct.py"]

运行容器时报错:

Traceback (most recent call last):
  File "app/fct.py", line 1, in <module>
    from config.settings import sum_fct
ModuleNotFoundError: No module named 'config'

解决方案

问题出在脚本的运行方式:直接执行python app/fct.py时,Python会将app/目录(脚本所在目录)添加到sys.path中,而非项目根目录/application/,因此无法识别同级的config包。

无需修改PYTHONPATH或sys模块,只需调整Dockerfile的运行命令,采用模块方式启动:

修改Dockerfile的CMD指令为:

CMD ["python", "-m", "app.fct"]

使用-m参数时,Python会将当前工作目录(项目根目录/application)加入sys.path,此时config作为根目录下的包可被正常识别,导入语句能正常执行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:58:12