ubuntu16.04 pip與python版本對應問題

                                                                      ubuntu16.04 pip與python版本對應問題

1.sudo pip -V與pip -V路徑不一定相同的 

2.網上有人說這是python pip的一個bug:https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1306991

    可以參考一下這個網址https://blog.csdn.net/L_0000/article/details/80716111 

3. 在linux安裝了多版本python時(例如python2.6和2.7),pip安裝的包不一定是用戶想要的位置,此時可以用 -t 選項來指定位置.

例如:sudo pip install -t /usr/local/lib/python2.7/site-packages/ wxpython

4.修改python默認版本,由python2.7改成python3.5

 查看python得到其可執行路徑,把它刪掉
$ which python
/usr/bin/python

$ sudo rm /usr/bin/python

$ python
~bash: /usr/bin/python: No such file or directory

上面刪去後再輸入$ python命令就會報錯,因爲系統不知該如何執行,然後我們爲它建立一個新的默認鏈接到python3.5
$ ln -s /usr/bin/python3.5 /usr/bin/python
$ python -V
Python 3.5.2
至此就完成默認版本的修改了,也可以用同樣方法修改python2和python3

5.更改pip、pip2、pip3命令對應版本

 

其實上面的步驟執行完後,pip默認對應版本就已經是python3.5了,而pip3不變仍然對應python3,這裏要改的是pip2的配置文件,否則無法再使用pip2。
查看一下現在的pip和pip3對應版本
$ pip -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

但是發現查看pip2卻出現下面的報錯,這是因爲配置文件還沒改
$ pip2 - V
Traceback (most recent call last):
  File "/usr/bin/pip2", line 9, in <module>
    load_entry_point('pip==8.1.1', 'console_scripts', 'pip2')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2568, in load_entry_point
    raise ImportError("Entry point %r not found" % ((group, name),))
ImportError: Entry point ('console_scripts', 'pip2') not found

打開錯誤提示中的“/usr/bin/pip2”文件,把文件中第一行的“#!/usr/bin/python”改爲“#!/usr/bin/python2” 即可
$ sudo gedit /usr/bin/pip2
原文件內容如下:
#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==8.1.1','console_scripts','pip2'
__requires__ = 'pip==8.1.1'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==8.1.1', 'console_scripts', 'pip2')()
    )

修改後:
#!/usr/bin/python2
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==8.1.1','console_scripts','pip2'
__requires__ = 'pip==8.1.1'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==8.1.1', 'console_scripts', 'pip2')()
    )
然後測試,pip2成功對應回版本python2.7
$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
我是這麼理解的,系統默認情況下,pip指向python2.7,pip2指向Python2.7,pip3指向python3.5(就當pip和pip2相同,指向了系統python2.7,修改系統默認python後,pip指向python3.5,pip3指向了python3.5,而pip2原來指向了系統python,原來的系統python是2.7現在變成了3.5,所以會出錯)

6.知乎有一篇文章:

多版本Python安裝pip及pip版本管理終極教程

https://zhuanlan.zhihu.com/p/37473690

稀有動物

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章