pip和pip3 - 都指向python3.5?

时间:2017-02-16 19:55:33

标签: python linux python-2.7 pip ubuntu-16.04

我今天开始尝试shade;并在我的ubuntu 16.04系统上为python2和python3安装了它;使用:

sudo pip install shade

分别

sudo pip3 install shade

两个命令都通过了;我并没有真正关注。

然后我尝试运行这个小测试脚本:

from shade import *

simple_logging(debug=True)
conn = openstack_cloud(cloud='myopenstack')
images = conn.list_images()
for image in images:
  print(image)

使用python3,我收到了证书错误(很好,我会很惊讶地发现我们的内部基础设施使用正确的证书)。

但是为了确定,我也想用python2.7运行;我被告知:

  

ImportError:没有名为shade

的模块

所以,我仔细研究了pip和pip3的含义:

> pip -V
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)
> pip3 -V
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

看起来pippip3实际上都在我的python3安装上工作,但是当我这样做时:

 > python --version
 Python 2.7.12
 > python3 --version
 Python 3.5.2

任何想法,任何人?是什么导致这个,或者如何为python2 / pip实际安装 shade

根据要求:

> for i in pip pip3 python python3 ; do type $i ; done
pip is /usr/local/bin/pip
pip3 is /usr/local/bin/pip3
python is /usr/bin/python
python3 is /usr/bin/python3

5 个答案:

答案 0 :(得分:4)

python -m pip

这将使用python可以看到的pip版本。

答案 1 :(得分:4)

pip3看起来像pip使用的默认选项。尝试使用pip2代替显式安装Python 2包。

答案 2 :(得分:4)

只需将/usr/local/bin/pip的第一行更改为:

即可

#!/usr/bin/python

/usr/local/bin/pip3的第一行:

#!/usr/bin/python3

然后它会正常行动:

> pip -V
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
> pip3 -V
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

答案 3 :(得分:1)

您在/ usr / local / bin /中本地安装了python3的pip,并在/ usr / bin中隐藏了pip的系统安装。要使用系统的默认点,您可以:

  • 明确指定路径:sudo /usr/bin/pip install shade
  • 删除pip的本地安装:sudo rm /usr/local/bin/pip
  • 将您的$ PATH更改为首选/usr/bin/usr/local/bin
  • 使用pip2/usr/bin
  • 中的sudo pip2 install shade别名
  • 从系统存储库安装python3sudo apt-get install python3。如果你选择这条路线,请不要忘记删除本地python3安装。

答案 4 :(得分:1)

我遇到了这个问题(pip与Python 3相关联),这是由于pip安装程序更新了pip以指向Python3。我认为这非常令人困惑,因为历史上每个人都将pip与Python 2和pip3相关联使用Python3。我们通过以下操作解决了这个问题:

# install pip
curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py
sudo python3 /tmp/get-pip.py
sudo python /tmp/get-pip.py # install the python2 version last so the pip binary is not overwritten with the python3 version
rm /tmp/get-pip.py

这里的关键是在安装Python 3点之后安装Python 2点。