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

Docker运行Python2.7脚本时无法访问同目录utils模块求助

问题原因与解决方案

核心错误

  1. 未复制utils目录到容器:你的Dockerfile只拷贝了test_server.py,但脚本依赖的utils文件夹并没有同步到容器工作目录,导致Python无法找到该模块。
  2. 工作路径写法错误:python:2.7镜像基于Linux系统,你使用了Windows风格的路径C:\something\something\print,这在Linux容器中完全无效,会导致工作目录设置异常。

修正步骤

1. 修正工作目录路径

将WORKDIR改为Linux风格的路径,比如:

WORKDIR /app/print

2. 复制utils目录到容器

在COPY test_server.py ./的位置,添加复制utils目录的命令:

COPY utils/ ./utils/

如果本地项目根目录只有test_server.py和utils文件夹,也可以直接复制整个目录内容(建议配合.dockerignore文件排除日志、缓存等无关文件):

COPY . .

3. 确保utils是合法Python模块

在本地的utils文件夹中添加一个空的__init__.py文件——Python 2.7要求必须有这个文件,才能将文件夹识别为可导入的模块。

4. 优化Dockerfile(可选但推荐)

合并RUN命令减少镜像层数,同时清理临时缓存减小镜像体积:

FROM python:2.7

WORKDIR /app/print

# 合并apt-get安装命令并清理缓存
RUN apt-get update && apt-get install -y \
    python-cairo \
    python-gi \
    python-gi-cairo \
    gir1.2-gtk-3.0 \
    mapnik-utils \
    && rm -rf /var/lib/apt/lists/*

# 合并pip安装命令
RUN pip install bs4 image mapnik numpy psycopg2

# 复制项目所有文件
COPY . .

CMD [ "python", "./test_server.py"]

验证方法

重新构建镜像并运行容器,此时容器工作目录下会同时存在test_server.py和utils文件夹,Python就能正常导入模块了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:01:14