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

Poetry导出依赖部署Docker时提示找不到my_package模块求助

解决Docker部署后找不到my_package模块的问题

问题根源

poetry export命令只会导出项目的第三方依赖(即[tool.poetry.dependencies]和[tool.poetry.dev-dependencies]里的内容),不会把你自己的my_package包写入requirements.txt。所以你只安装导出的依赖时,Docker容器里根本没有安装你的项目包,自然会报no module named my_package。

解决方案

下面提供两种可行的解决思路,按需选择:

方案1:用Poetry直接在Docker里安装整个项目(推荐)

这种方式能完全保持依赖的一致性,不需要手动导出requirements.txt:

# 基于Python 3.10的轻量镜像
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 安装Poetry(如果镜像里没有的话)
RUN pip install --no-cache-dir poetry

# 复制Poetry配置文件(先复制这两个文件,利用Docker缓存优化构建速度)
COPY pyproject.toml poetry.lock ./

# 安装所有依赖(包括你的项目包),--no-root可以先装依赖再复制源码,也可以直接用poetry install
RUN poetry install --without-hashes --with dev

# 复制项目源码到容器
COPY src/ ./src/

# 替换成你实际的启动命令
CMD ["python", "-m", "my_package"]

方案2:继续用export的requirements.txt,额外安装自己的包

如果坚持要使用导出的requirements.txt,需要在Docker里额外安装你的项目包:

  1. 先执行你原来的export命令导出依赖:
poetry export --format requirements.txt --output poetry-requirements.txt --without-hashes --with dev
  1. 编写Dockerfile:
FROM python:3.10-slim

WORKDIR /app

# 复制导出的依赖文件
COPY poetry-requirements.txt ./

# 安装第三方依赖
RUN pip install --no-cache-dir -r poetry-requirements.txt

# 复制项目源码
COPY src/ ./src/

# 安装你的my_package包(这一步是关键)
RUN pip install .

# 或者也可以通过设置PYTHONPATH让Python找到src目录(不推荐,不如安装包规范)
# ENV PYTHONPATH=/app/src

# 启动命令
CMD ["python", "-m", "my_package"]

补充说明

你的项目采用src布局是规范的做法,Poetry的packages = [{ include = "my_package", from = "src" }]配置也没问题,核心问题就是自己的包没有被安装到Docker容器的Python环境中,只要补上这一步就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:42:44