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

Ubuntu、Python、Weasyprint Docker镜像问题:venv依赖无法被调用

解决Docker中Python依赖无法加载的问题

问题背景

构建包含Ubuntu、Python和Weasyprint的Docker镜像时,requirements.txt内的依赖已安装到虚拟环境.venv,但运行main.py时触发ModuleNotFoundError: No module named 'sqlalchemy'——原因是运行时使用的是系统全局Python,未加载虚拟环境中的依赖。

两种可行解决方案

方案1:将依赖安装到系统全局

直接使用系统级pip安装依赖,无需虚拟环境,简化Dockerfile:

修改Dockerfile中安装依赖的部分:

# Install dependencies
RUN echo Dockerfile :: Install dependencies
RUN pip3 install -r requirements.txt

同时删除虚拟环境相关的冗余步骤:

  • 删除RUN apt-get install python3-venv -y
  • 删除RUN python3 -m venv .venv、RUN . .venv/bin/activate、RUN .venv/bin/pip install -r requirements.txt

方案2:运行时使用虚拟环境

保留虚拟环境安装依赖的步骤,修改CMD确保运行时加载虚拟环境:

方式A:通过shell激活虚拟环境后运行

CMD ["/bin/bash", "-c", ". .venv/bin/activate && python3 ./main.py"]

方式B:直接调用虚拟环境内的Python解释器

CMD [".venv/bin/python3", "./main.py"]

注:原Dockerfile中RUN . .venv/bin/activate无效,因为每个RUN指令对应独立的shell进程,环境变量不会跨进程继承;但你已经用.venv/bin/pip完成了依赖安装,只需确保运行时调用虚拟环境内的Python解释器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:34:56