Docker部署Python应用遇ModuleNotFoundError:找不到src.scrapers模块
解决Docker中Python模块找不到的问题
问题根源
本地Windows环境执行命令时,当前目录会自动加入Python的模块搜索路径(sys.path),因此能正常识别src模块。但Docker容器内的Python环境默认可能未将工作目录正确纳入搜索路径,导致无法找到src.scrapers模块。
可行解决方案
方案1:将src转为合法Python包
在src根目录创建空的__init__.py文件,让Python识别src为合法包:
touch src/__init__.py
修改后的文件结构:
Dockerfile requirements.txt src ├── __init__.py ├── database ├── logs └── scrapers ├── __init__.py └── taskmanager.py
方案2:显式设置PYTHONPATH环境变量
在Dockerfile中添加环境变量,强制将工作目录加入Python模块搜索路径:
FROM python:3.10-slim WORKDIR /app # 添加这行设置环境变量 ENV PYTHONPATH=/app COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . CMD ["python", "-m", "src.scrapers.taskmanager"]
方案3:直接运行脚本文件
放弃模块运行方式,改为直接执行脚本路径:
FROM python:3.10-slim WORKDIR /app COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . # 修改CMD为直接运行脚本 CMD ["python", "src/scrapers/taskmanager.py"]
验证步骤
构建镜像并运行容器测试:
docker build -t scraper-app . docker run scraper-app
内容的提问来源于stack exchange,提问作者neiii
相关产品推荐
相关产品推荐

