如何在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"]
答案 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/