Docker容器中Python模块test_copilot无法导入问题求助
问题原因及解决方法
核心原因
你犯了两个关键错误:
pip install -r requirements.txt仅安装了第三方依赖包,你的test_copilot本地模块并没有被安装到容器的Python环境中,Python自然找不到它。- 直接运行
/app/src/test_copilot/main.py时,Python默认的模块搜索路径不包含/app/src,即便目录下有__init__.py,也无法识别为合法的Python包。
三种可行解决方案
方案一:用Poetry完整安装项目(推荐)
Poetry本身支持直接安装整个项目(包括本地模块),无需导出requirements.txt绕弯:
FROM python:3.10-alpine RUN apk update && apk upgrade RUN pip install -U pip poetry==1.1.13 WORKDIR /app COPY ./copilot-prototype . # 安装所有依赖,同时将本地项目作为包安装到Python环境 RUN poetry install --no-dev # --no-dev 可去掉开发依赖,按需添加 # 用Poetry的虚拟环境运行代码,确保路径正确 CMD [ "poetry", "run", "python", "/app/src/test_copilot/main.py" ]
方案二:临时添加Python模块搜索路径
直接在运行命令中指定PYTHONPATH,让Python能找到/app/src下的包:
FROM python:3.10-alpine RUN apk update && apk upgrade RUN pip install -U pip poetry==1.1.13 WORKDIR /app COPY ./copilot-prototype . RUN poetry export --without-hashes --format=requirements.txt > requirements.txt RUN pip install -r requirements.txt # 通过PYTHONPATH将src目录加入模块搜索路径 CMD [ "sh", "-c", "PYTHONPATH=/app/src python /app/src/test_copilot/main.py" ]
方案三:用Pip安装本地项目
在安装完第三方依赖后,手动把本地项目安装到Python环境:
FROM python:3.10-alpine RUN apk update && apk upgrade RUN pip install -U pip poetry==1.1.13 WORKDIR /app COPY ./copilot-prototype . RUN poetry export --without-hashes --format=requirements.txt > requirements.txt RUN pip install -r requirements.txt # 将本地项目安装为Python包(-e 是可编辑模式,方便调试) RUN pip install -e . CMD [ "python", "/app/src/test_copilot/main.py" ]
额外注意事项
确保你的COPY ./copilot-prototype .命令是正确的——本地的copilot-prototype目录下必须包含src文件夹,否则容器内/app/src不存在,所有方案都会失效。
内容的提问来源于stack exchange,提问作者IFThenElse
相关产品推荐
相关产品推荐

