在跑步的时候
$ sudo docker build -t myproj:tag 。
我被消息击中了
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
并考虑到最近偶尔出现的细微之处会出现错误:
"/usr/bin/pip" "from pip import main" "ImportError: cannot import .."
我宁愿屈服并确实升级。
因此,在构建 DockerFile
_之后_,我在 --- 中添加了 pip upgrade
命令,因为 pip
2e这个权利?)。所以我的 Dockerfile 现在有这个:
...
RUN python -m venv venv
RUN pip install --upgrade pip
...
但这样做并不能避免“您正在使用 pip 10.x”消息。我错过了什么?
更新
虽然是一个很有前途的建议,但两者都不是
RUN source venv/bin/activate
RUN pip install --upgrade pip
也不
RUN source venv/bin/activate
RUN python -m pip install --upgrade pip
消除“您正在使用 pip 版本 10.0.1,…”消息。
原文由 Calaf 发布,翻译遵循 CC BY-SA 4.0 许可协议
对此最简单的答案就是不要理会 Docker 镜像中的虚拟环境。虚拟环境为您提供了一个独立的文件系统空间,其中包含一组与系统安装不冲突的私有 Python 包,但 Docker 映像也是如此。您可以只在 Docker 映像中使用系统 pip 就可以了。
如果你真的想要一个虚拟环境,你要么需要从虚拟环境的路径中专门运行包装脚本
或者在 每个 RUN 命令上运行虚拟环境“激活”脚本;它设置的环境变量不会从一个步骤转移到另一个步骤。 (每个 RUN 命令实际上执行它自己的
docker run; docker commit
引擎盖下的序列,并将在新容器中启动新 shell; Dockerfile 参考 对此有一点描述。)尝试在其自己的 RUN 指令中激活虚拟环境除了生成一个空操作层外什么也做不了。