Mac下關於pip和pip3的正確解鎖方式

一、pip2的安裝

Mac自帶python 2.7的環境,可以直接which python查看其安裝目錄:

~ $ which python
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python

查看python2.7沒問題,則可以用sudo easy_install pip來安裝pip2。

~ $ sudo easy_install pip
Password:
Searching for pip
Best match: pip 19.1.1
pip 19.1.1 is already the active version in easy-install.pth
Installing pip script to /usr/local/bin
Installing pip3.7 script to /usr/local/bin
Installing pip3 script to /usr/local/bin

Using /Library/Python/2.7/site-packages
Processing dependencies for pip
Finished processing dependencies for pip

安裝完成後,執行pip -Vpip2 -V查看pip版本:

~ $ pip -V
pip 19.2.3 from /Library/Python/2.7/site-packages/pip-19.2.3-py2.7.egg/pip (python 2.7)
~ $ pip2 -V
pip 19.2.3 from /Library/Python/2.7/site-packages/pip-19.2.3-py2.7.egg/pip (python 2.7)

也可以執行which pipwhich pip2查看其安裝路徑:

~ $ which pip
/usr/local/bin/pip
~ $ which pip2
/usr/local/bin/pip2

之後,只需要運行pip2 install xxx即可安裝python2的包,它們將被安裝到/Library/Python/2.7/site-packages/目錄下

二、pip3的安裝

第一步:在終端輸入curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

~ $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1733k  100 1733k    0     0   191k      0  0:00:09  0:00:09 --:--:--  231k

第二步:執行sudo python3 get-pip.py安裝pip3

~ $ sudo python3 get-pip.py
WARNING: The directory '/Users/xulinzhou/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
WARNING: The directory '/Users/xulinzhou/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting pip
  Downloading https://files.pythonhosted.org/packages/30/db/9e38760b32e3e7f40cce46dd5fb107b8c73840df38f0046d8e6514e675a1/pip-19.2.3-py2.py3-none-any.whl (1.4MB)
     |████████████████████████████████| 1.4MB 1.0MB/s 
Installing collected packages: pip
Successfully installed pip-19.2.3

注意:如果執行sudo python get-pip.py,則安裝的是pip2。
第三步:執行pip -Vpip3 -V驗證pip3的安裝

~ $ pip -V
pip 19.2.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
~ $ pip3 -V
pip 19.2.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

至此,pip3安裝完成。這時候我們驚奇的發現,在安裝pip2時,pip等同於pip2,但是在安裝完pip3後,pip變成了等同於pip3。所以,以後要安裝python2的包時,需要用pip2 install xxx而不是pip install xxx了。

~ $ pip -V
pip 19.2.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
~ $ pip2 -V
pip 19.2.3 from /Library/Python/2.7/site-packages/pip (python 2.7)
~ $ pip3 -V
pip 19.2.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

三、如何卸載pip2和pip3

如果只安裝了pip2,這時候pip等同於pip2,所以卸載時可以執行sudo pip uninstall pipsudo pip2 uninstall pip

~ $ sudo pip2 uninstall pip
Password:
WARNING: The directory '/Users/xulinzhou/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Uninstalling pip-19.2.3:
  Would remove:
    /usr/local/bin/pip
    /usr/local/bin/pip3
    /usr/local/bin/pip3.7
    /usr/local/lib/python3.7/site-packages/pip-19.2.3.dist-info/*
    /usr/local/lib/python3.7/site-packages/pip/*
Proceed (y/n)? y
  Successfully uninstalled pip-19.2.3

卸載pip3的方式和卸載pip2的類似,執行sudo pip3 uninstall pip即可。實際上sudo pip uninstall pip命令則取決於這時候的pip等效於pip2還是pip3,可以通過pip -V查看。題主這裏安裝完pip3後的pip此時等效的是pip3,未安裝pip3之前,pip等效於pip2。

四、如何升級pip2和pip3

執行pip2 install –upgrade pip可升級pip2,如下:

~ $ pip2 install --upgrade pip
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Requirement already up-to-date: pip in /Library/Python/2.7/site-packages (19.2.3)

執行pip3 install –upgrade pip可升級pip3,如下:

~ $ pip3 install --upgrade pip
Requirement already up-to-date: pip in /usr/local/lib/python3.7/site-packages (19.2.3)

同理卸載,升級執行pip install –upgrade pip時,取決於這時候pip等效於pip2還是pip3。

五、切換pip等效成pip2或pip3

如果需要將pip改成等效成pip2,執行vim /usr/local/bin/pip,把第一行的改成:#!/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python即可。如下:

#!/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

如果需要將pip改成等效成pip3,執行vim /usr/local/bin/pip,把第一行的改成:#!/usr/local/opt/python/bin/python3.7即可。如下:

#!/usr/local/opt/python/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

這樣,可以自由切換pip等效成pip2或pip3。

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