Как добавить путь к PYTHONPATH в файле Docker

Как добавить путь к PYTHONPATH в файл Docker? Так что, когда контейнер запущен, он имеет правильный PYTHONPATH? Я совершенно новый для докеров.

Я добавил ENV PYTHONPATH "${PYTONPATH}: /control" в файл Docker, поскольку я хочу добавить каталог /control в PYTHONPATH.

Когда я получаю доступ к контейнерам bash с помощью docker exec -it trusting_spence bash и open python и запускает команды ниже docker exec -it trusting_spence bash 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"] 

Ответы

Ответ 1

Просто добавьте запись ENV в свой Dockerfile:

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

Или установите PYTHONPATH в сценарии запуска.

Ответ 2

Вы правильно устанавливаете путь к python, но ваша команда не запускается оболочкой, поэтому переменная окружения PYTHONPATH не рассматривается.

измените CMD с формы "exec" на форму "shell":

CMD python control/control_file/job.py


Из документов:

Примечание. В отличие от формы оболочки, форма exec не вызывает командную оболочку. Это означает, что обычная обработка оболочки не происходит. Например, CMD ["echo", "$ HOME"] не будет выполнять подстановку переменных в $ HOME. Если вы хотите обработать оболочку, то либо используйте форму оболочки, либо выполните оболочку напрямую, например: CMD ["sh", "-c", "echo $ HOME"]. При использовании формы exec и непосредственном выполнении оболочки, как в случае с формой оболочки, именно оболочка выполняет расширение переменной среды, а не docker.

Ответ 3

Сделайте это намного проще. Таким образом добавьте путь Python в свой файл .env в виде строки.

PYTHONPATH=/app/project_source/