Ubuntu Docker容器安装Python、Pip及virtualenv时pip未找到问题排查
解决Ubuntu 16.04 Docker容器中
pip: not found的问题 咱们先拆解下你遇到的问题,主要有两个核心原因:
1. Dockerfile里的语法错误导致安装流程异常
看你贴的Dockerfile片段,有两处明显的命令错误:
RUN apt-get这一行没有任何参数,执行时必然会触发报错,可能你没留意到这一步的异常;RUN apt-get python3 -y缺少了install关键字,正确写法应该是RUN apt-get install python3 -y
这些错误会直接导致Python3和pip3的安装不完整,这也是后续找不到pip的潜在诱因之一。
2. Ubuntu 16.04中pip与pip3的默认差异
即使你正确安装了python3-pip,在Ubuntu 16.04系统里,默认提供的命令是pip3而非pip——因为系统默认预装了Python2,pip命令默认指向Python2的包管理器,而你安装的是Python3对应的pip工具。直接敲pip的话,系统找不到对应命令,自然会抛出not found的错误。
针对问题的修复方案
这里给你两种可行的解决方式,选其一即可:
方式一:直接使用pip3命令
修改Dockerfile里的安装命令,把pip换成pip3,同时修正之前的语法错误:
FROM ubuntu:16.04 RUN apt-get update -y RUN apt-get install python3 -y RUN apt-get install python3-pip -y RUN pip3 install virtualenv
方式二:创建pip到pip3的软链接
如果你习惯用pip命令,可以在安装完python3-pip后,手动建立软链接让pip指向pip3:
FROM ubuntu:16.04 RUN apt-get update -y RUN apt-get install python3 -y RUN apt-get install python3-pip -y RUN ln -s /usr/bin/pip3 /usr/bin/pip RUN pip install virtualenv
另外,建议你把多个apt-get命令合并成一个,既减少镜像层数,也能避免中间命令失败导致的构建问题:
FROM ubuntu:16.04 RUN apt-get update -y && \ apt-get install -y python3 python3-pip && \ ln -s /usr/bin/pip3 /usr/bin/pip && \ pip install virtualenv
内容的提问来源于stack exchange,提问作者romlym




