如何在Dockerfile中添加PYTHONPATH的路径

时间:2018-04-03 13:19:11

标签: python docker path

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

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

当我使用docker exec -it trusting_spence bash访问容器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"] 

3 个答案:

答案 0 :(得分:16)

只需在ENV中添加Dockerfile条目:

ENV PYTHONPATH "${PYTHONPATH}:/your/custom/path"

或者在启动脚本中设置PYTHONPATH

答案 1 :(得分:1)

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

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

CMD python control/control_file/job.py


来自Docs

  

注意:与shell窗体不同,exec窗体不会调用命令shell。这意味着正常的外壳处理不会发生。例如,CMD [“ echo”,“ $ HOME”]不会在$ HOME上进行变量替换。如果要进行外壳处理,则可以使用外壳形式或直接执行外壳,例如:CMD [“ sh”,“-c”,“ echo $ HOME”]。在使用exec表单并直接执行shell时(例如在shell表单中),是由shell进行环境变量扩展,而不是docker。

答案 2 :(得分:1)

以一种简单得多的方式进行。以此方式将.env文件中的python路径添加为一行。

PYTHONPATH=/app/project_source/