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

使用Turborepo构建Monorepo时Docker容器出现dotenv模块缺失错误

Docker构建Turborepo Monorepo中的Python应用时出现ModuleNotFoundError: No module named 'dotenv'

问题场景

在Turborepo管理的Monorepo项目中,构建apps/sync-sheet Python应用的Docker容器时,运行报错找不到dotenv模块。尽管requirements.txt已声明python-dotenv==1.0.0,且本地环境运行正常。

错误信息

Traceback (most recent call last):
  File "/app/services/sheet-sync/main.py", line 1, in <module>
    from src.reads.supplier_info import build as build_suppliers
  File "/app/services/sheet-sync/src/reads/supplier_info.py", line 1, in <module>
    from src.reads.read_data_from_sheet import read_data_from_sheet
  File "/app/services/sheet-sync/src/reads/read_data_from_sheet.py", line 1, in <module>
    from src.config.google_config import sheets
  File "/app/services/sheet-sync/src/config/google_config.py", line 2, in <module>
    from dotenv import load_dotenv
ModuleNotFoundError: No module named 'dotenv'

项目结构

.
├── README.md
├── docker-compose.yml
├── node_modules
├── package.json
├── apps
│   └── sync-sheet
│       ├── Dockerfile
│       ├── Makefile
│       ├── creds.json
│       ├── googleSheetENV
│       ├── main.py
│       ├── package.json
│       ├── requirements.txt
│       └── src
├── packages
├── tsconfig.json
├── turbo.json
└── yarn.lock

解决思路

  • 检查Dockerfile的依赖安装步骤
    确认Dockerfile中是否包含RUN pip install -r requirements.txt(或pip3,避免Python2环境冲突),且该步骤在复制应用代码之后执行。若依赖安装在代码复制前,可能因Docker缓存导致新依赖未生效。可添加--no-cache-dir强制重新安装,或指定PyPI源加速:

    WORKDIR /app/apps/sync-sheet
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    COPY . .
    
  • 验证requirements.txt路径正确性
    确保Docker构建时requirements.txt被复制到正确的工作目录下。如果在项目根目录执行构建命令(docker build -f apps/sync-sheet/Dockerfile .),需在Dockerfile中明确指定复制路径:

    COPY apps/sync-sheet/requirements.txt /app/apps/sync-sheet/
    WORKDIR /app/apps/sync-sheet
    RUN pip install -r requirements.txt
    
  • 确认Python环境一致性
    检查Docker镜像使用的Python版本与本地是否匹配(比如本地用Python3.9,Docker镜像用python:3.9-slim),避免因版本差异导致依赖安装异常。同时确保使用对应版本的pip(如pip3)。

  • 验证依赖安装结果
    在Dockerfile中添加调试步骤,查看依赖是否成功安装:

    RUN pip show python-dotenv
    RUN pip list | grep dotenv
    

    若输出为空,说明依赖未安装成功,需排查网络或源的问题。

  • 检查Python模块导入路径
    确保应用所在目录被加入Python路径。可在Dockerfile中设置环境变量:

    ENV PYTHONPATH=/app/apps/sync-sheet
    

    或在启动命令前临时设置:

    PYTHONPATH=/app/apps/sync-sheet python main.py
    

内容的提问来源于stack exchange,提问作者Roni Jack Vituli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 15:47:03