【发布时间】:2019-12-01 02:23:10
【问题描述】:
问题:如何修复 Dockerfile 以正确冻结 requirements.txt 并成功构建?
我正在部署 Python 脚本的 Dockerfile,利用 Pyenv 和 Pipenv 进行本地开发。
在 Piplock 文件被冻结为 requirements.txt 的构建步骤中,我收到以下错误:
错误:“--python”的值无效:路径中的预期 Python /Users/jz/.local/share/virtualenvs/quanter-TP0oWHoL/bin/python3 确实 不存在
我的 Dockerfile 是:
FROM python:3.7
RUN pip install pipenv
COPY Pipfile* /tmp/
RUN cd /tmp && pipenv --python /Users/x/.local/share/virtualenvs/quanter-TP0oWHoL/bin/python3 lock --requirements > requirements.txt
ENV RDKAFKA_INSTALL=system
RUN pip install -r /tmp/requirements.txt
COPY . /tmp/app/
RUN pip install /tmp/app/
CMD ["python", "./tmp/app/main.py"]
本地 Pipenv 环境的创建提供了有关解释器的以下信息(在 Dockerfile 中使用):
使用 /usr/local/opt/pyenv/versions/3.8.0/bin/python3 (3.8.0) 来 create virtualenv... ⠙ 创建虚拟环境...使用基本前缀 '/usr/local/opt/pyenv/versions/3.8.0' 新的 python 可执行文件 /Users/x/.local/share/virtualenvs/quanter-TP0oWHoL/bin/python3 还有 在中创建可执行文件 /Users/x/.local/share/virtualenvs/quanter-TP0oWHoL/bin/python
Pyenv 在本地使用 3.8.0:
pyenv versions
system
3.7.5
* 3.8.0 (set by /Users/x/Projects/quanter/.python-version)
我们将不胜感激任何帮助完成这项工作!谢谢。
【问题讨论】:
-
为什么需要手动创建锁:从 pipenv 转换需求并加锁? Pipenv 为你做这件事,不是吗?
-
@funnydman 虽然我想在本地开发中使用 Pipenv 作为其虚拟环境,但我不希望 Docker 环境内部有一个虚拟环境,从而混淆了 Docker 作为环境的目的。我只想在 Docker 容器中使用 Pip 并从需求文件系统地安装依赖项。不需要虚拟环境。
-
@funnydman 就目前而言,由于我已经概述的无法找到 Pyenv 解释器的问题,Pipenv 无论如何都无法工作。
标签: python-3.x docker dockerfile pipenv pyenv