Как добавить путь к PYTHONPATH в Dockerfile? Чтобы при запуске контейнера был правильный PYTHONPATH? Я совершенно новичок в Докере.
Я добавил ENV PYTHONPATH "${PYTHONPATH}:/control" в Dockerfile, так как хочу добавить каталог /control в PYTHONPATH.
Когда я получаю доступ к bash контейнера с помощью docker exec -it trusting_spence bash, открываю python и запускаю команды ниже, каталог control отсутствует в списке.
import sys print(sys.path)
FROM python:2
RUN pip install requests pymongo
RUN mkdir control
COPY control_file/ /control
ENV PYTHONPATH "${PYTHONPATH}:/control"
CMD ["python","control/control_file/job.py"]






Просто добавьте запись ENV в свой Dockerfile:
ENV PYTHONPATH "${PYTHONPATH}:/your/custom/path"
Или установите PYTHONPATH в свой сценарий запуска.
Вы пробовали с исправленной опечаткой в строке? "$ {PYTHONPATH}: / ваш / пользовательский / путь"
по той или иной причине это все еще просто перезаписывает мой PYTHONPATH. Кроме того, пока это изменяет переменную ENV, мой путь в соответствии с python -c "import sys; for p in sys.path: print(p)" все еще не изменился и содержит только старый (казалось бы, перезаписанный) PYTHONPATH, в котором ни одно из изменений
Кто-нибудь вручит этому парню медаль. Большое спасибо. Работал как шарм. :)
Вы правильно устанавливаете путь Python, но ваша команда не запускается оболочкой, поэтому переменная среды PYTHONPATH не рассматривается.
измените ваш CMD с формы "exec" на форму "оболочки":
CMD python control/control_file/job.py
Из Документы:
Note: Unlike the shell form, the exec form does not invoke a command shell. This means that normal shell processing does not happen. For example, CMD [ "echo", "$HOME" ] will not do variable substitution on $HOME. If you want shell processing then either use the shell form or execute a shell directly, for example: CMD [ "sh", "-c", "echo $HOME" ]. When using the exec form and executing a shell directly, as in the case for the shell form, it is the shell that is doing the environment variable expansion, not docker.
Сделайте это гораздо проще. Таким образом добавьте путь Python в ваш файл .env в виде строки.
PYTHONPATH=/app/project_source/
Я безуспешно попробовал ваше предложение, я отредактировал свое исходное сообщение, включив в него свои шаги. Не могли бы вы подсказать, что я делаю не так?