我今天开始尝试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)
看起来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
答案 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
/usr/bin
至/usr/local/bin
pip2
:/usr/bin
sudo pip2 install shade
别名
python3
:sudo 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点。