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

Docker容器运行报错:无法找到自定义Python函数模块functions

解决Docker容器中FastAPI项目模块导入错误

问题原因

本地Mac环境运行时,Python默认将执行脚本所在的目录添加到sys.path中,所以main.py能直接找到同目录的functions.py;但在Docker容器中,若运行脚本时的工作目录或PYTHONPATH未包含/code/app,Python无法定位到该模块,就会抛出ModuleNotFoundError。

解决方案

方案1:使用相对导入修改代码

将main.py中的导入语句改为相对导入形式:

from .functions import functionname

注意:此时需以模块方式运行main.py,在Dockerfile中对应的启动命令应为:

WORKDIR /code
CMD ["python", "-m", "app.main"]

方案2:手动添加模块路径到sys.path

在main.py的最开头添加以下代码,强制将脚本所在目录加入Python的模块搜索路径:

import sys
from pathlib import Path

# 将当前文件所在目录添加到sys.path
sys.path.append(str(Path(__file__).parent))

修改后无需调整Docker命令,保持原有的导入语句即可正常运行。

方案3:通过Dockerfile配置PYTHONPATH

在Dockerfile中添加环境变量,指定Python的模块搜索路径包含/code/app:

ENV PYTHONPATH=/code/app

这样Python会自动搜索/code/app下的模块,原导入语句from functions import functionname无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:52:42