如何在Dockerfile中添加PYTHONPATH的路径

arc*_*tom 19 python path docker

如何在Dockerfile中添加PYTHONPATH的路径?这样当容器运行时它有正确的PYTHONPATH?我对码头工作者来说是新手.

我已添加ENV PYTHONPATH "${PYTONPATH}:/control"到Dockerfile,因为我想将目录添加/controlPYTHONPATH.

当我访问容器bash docker exec -it trusting_spence bash并打开python并运行下面的命令时,目录control不在列表中.

import sys print(sys.path)

FROM python:2
RUN pip install requests\
&& pip install pymongo

RUN mkdir control

COPY control_file/ /control

ENV PYTHONPATH "${PYTONPATH}:/control"

CMD ["python","control/control_file/job.py"] 
Run Code Online (Sandbox Code Playgroud)

Eri*_*and 30

只需添加一个ENV条目Dockerfile:

ENV PYTHONPATH "${PYTHONPATH}:/your/custom/path"
Run Code Online (Sandbox Code Playgroud)

或者PYTHONPATH在启动脚本中设置.

  • 你是否用字符串中固定的拼写错误尝试了?"$ {PYTHONPATH}:/你/自定义/路径" (7认同)
  • 答案是正确的,它可能对某些人不起作用,因为您使用了错误的路径。如果您的模块名为“mymodule”并且位于 /src/mymodule 那么您应该具有: ENV PYTHONPATH "${PYTHONPATH}:/src" (4认同)

Nim*_*rag 10

您正确设置了 python 路径,但是您的命令不是由 shell 运行的,因此PYTHONPATH不考虑环境变量。

将您CMD的“exec”形式更改为“shell”形式:

CMD python control/control_file/job.py


文档

注意:与 shell 形式不同,exec 形式不调用命令 shell。这意味着正常的 shell 处理不会发生。例如, CMD [ "echo", "$HOME" ] 不会对 $HOME 进行变量替换。如果你想要 shell 处理,那么要么使用 shell 形式,要么直接执行 shell,例如:CMD [ "sh", "-c", "echo $HOME" ]。当使用 exec 形式并直接执行 shell 时,就像 shell 形式一样,是 shell 进行环境变量扩展,而不是 docker。