簡體   English   中英

pip 和 pip3 - 都指向 python3.5?

[英]pip and pip3 - both pointing to python3.5?

我今天開始嘗試陰影 並在我的 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 運行; 有人告訴我:

導入錯誤:沒有名為 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 實際安裝陰影

按照要求:

> 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

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)
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
  • 從系統存儲庫安裝python3sudo apt-get install python3 如果你走這條路,不要忘記刪除你本地的python3安裝。

我遇到了這個問題(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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM