Ответ 1
Просто добавьте запись ENV
в свой Dockerfile
:
ENV PYTHONPATH "${PYTHONPATH}:/your/custom/path"
Или установите PYTHONPATH
в сценарии запуска.
Как добавить путь к 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"]
Просто добавьте запись ENV
в свой Dockerfile
:
ENV PYTHONPATH "${PYTHONPATH}:/your/custom/path"
Или установите PYTHONPATH
в сценарии запуска.
Вы правильно устанавливаете путь к python, но ваша команда не запускается оболочкой, поэтому переменная окружения PYTHONPATH
не рассматривается.
измените CMD
с формы "exec" на форму "shell":
CMD python control/control_file/job.py
Из документов:
Примечание. В отличие от формы оболочки, форма exec не вызывает командную оболочку. Это означает, что обычная обработка оболочки не происходит. Например, CMD ["echo", "$ HOME"] не будет выполнять подстановку переменных в $ HOME. Если вы хотите обработать оболочку, то либо используйте форму оболочки, либо выполните оболочку напрямую, например: CMD ["sh", "-c", "echo $ HOME"]. При использовании формы exec и непосредственном выполнении оболочки, как в случае с формой оболочки, именно оболочка выполняет расширение переменной среды, а не docker.
Сделайте это намного проще. Таким образом добавьте путь Python в свой файл .env в виде строки.
PYTHONPATH=/app/project_source/