【发布时间】:2018-08-24 15:46:19
【问题描述】:
我有一个 Python 作业,我正试图在 Docker 映像中发布。代码的结构方式是一些模块从modules 文件夹中导入,因此我已将其添加到 Python 路径中。
具体来说,Dockerfile是
FROM python:3
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
ENV PYTHONPATH "/usr/src/app"
RUN pip3 install -r requirements.txt
如您所见,我正在尝试为 PYTHONPATH 设置环境变量,以便它可以在同一工作目录中找到内容。
要运行的脚本称为 main.py,当我在本地(不是从 docker)运行它时,
PYTHONPATH=$PYTHONPATH:$HOME/job-path python3 main.py
它运行良好。
使用该 Dockerfile instesd,在构建映像后,我从 docker inspect <ID> 获得了 Env 字段包含的映像
"Env": [
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"PYTHON_VERSION=3.6.4",
"PYTHON_PIP_VERSION=9.0.1",
"PYTHONPATH=/usr/src/app"
]
所以看起来没问题?但是docker run 给了我一个
ModuleNotFoundError: No module named 'modules'
【问题讨论】:
-
你可以在你的 docker run 命令后面加上
-e PYTHONPATH="/usr/src/app"并再次尝试运行它吗? -
@SagarRuchandani 完成,也不起作用,结果相同。
-
不确定容器内发生了什么。这可能是stackoverflow.com/questions/47355844/… 的可能副本吗
-
您意识到在 dockerfile 中设置 ENV 时您交换了它而不是附加它,对吗?我建议这样做:
ENV PYTHONPATH="$PYTHONPATH:/usr/src/app"而不是 -
你弄明白了吗?
标签: python docker pythonpath