pip 和 pip3 - 都指向 python3.5?
pip and pip3 - both pointing to python3.5?
我今天开始尝试 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: No module named 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)
看起来 pip
和 pip3
实际上都在处理我的 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
python -m pip
这将使用 python 可以看到的 pip 版本。
您在 /usr/local/bin/ 中 python3 的 pip 的本地安装隐藏了 /usr/bin 中 pip 的系统安装。为了使用系统默认的pip,您可以:
- 明确指定路径:
sudo /usr/bin/pip install shade
- 删除
pip
的本地安装:sudo rm /usr/local/bin/pip
- 将您的 $PATH 更改为更喜欢
/usr/bin
而不是 /usr/local/bin
- 使用来自
/usr/bin
的 pip2
别名:sudo pip2 install shade
- 从系统存储库安装
python3
:sudo apt-get install python3
。如果您走这条路,请不要忘记删除本地 python3
安装。
pip3
看起来像默认选项 pip
使用。尝试使用 pip2
来显式安装 Python 2 包。
只需将 /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)
我 运行 遇到了这个问题(pip 与 Python 3 相关联),这是由于 pip 安装程序将 pip 更新为指向 Python 3。我认为这是非常令人困惑的行为,因为历史上每个人都将 pip 与 Python 2 关联,将 pip3 与 Python 3 关联。我们通过执行以下操作解决了这个问题:
# 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 pip 之后安装 Python 2 pip。
我今天开始尝试 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: No module named 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)
看起来 pip
和 pip3
实际上都在处理我的 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
python -m pip
这将使用 python 可以看到的 pip 版本。
您在 /usr/local/bin/ 中 python3 的 pip 的本地安装隐藏了 /usr/bin 中 pip 的系统安装。为了使用系统默认的pip,您可以:
- 明确指定路径:
sudo /usr/bin/pip install shade
- 删除
pip
的本地安装:sudo rm /usr/local/bin/pip
- 将您的 $PATH 更改为更喜欢
/usr/bin
而不是/usr/local/bin
- 使用来自
/usr/bin
的pip2
别名:sudo pip2 install shade
- 从系统存储库安装
python3
:sudo apt-get install python3
。如果您走这条路,请不要忘记删除本地python3
安装。
pip3
看起来像默认选项 pip
使用。尝试使用 pip2
来显式安装 Python 2 包。
只需将 /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)
我 运行 遇到了这个问题(pip 与 Python 3 相关联),这是由于 pip 安装程序将 pip 更新为指向 Python 3。我认为这是非常令人困惑的行为,因为历史上每个人都将 pip 与 Python 2 关联,将 pip3 与 Python 3 关联。我们通过执行以下操作解决了这个问题:
# 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 pip 之后安装 Python 2 pip。