Macのpython2に対応するpip3の問題を解決します(pipポインティングの問題)

Macのpython2に対応するpip3の問題を解決します(pipポインティングの問題)

同じことがPython3に対応するpipの問題を解決することができます。


一つ、問題

Macでpipとpip3のバージョンを確認してください。pip3に対応するPythonのバージョンは2.7です。

画像-20201221215802703

通常の状況では、pipはPython2に対応し、pip3はPython3に対応します。

二、解く

コマンドpipの絶対パスを表示するにはどちらを使用します。

~ » which pip                
/usr/local/bin/pip

easy_installを使用してMacにpipをインストールすると、pipとpip3の両方がpipになります

~ » sudo easy_install pip                 littlechieh6@bogon
Password:
Searching for pip
Best match: pip 20.2b1
Processing pip-20.2b1-py2.7.egg
pip 20.2b1 is already the active version in easy-install.pth
Installing pip script to /usr/local/bin
Installing pip3.8 script to /usr/local/bin
Installing pip3 script to /usr/local/bin

Using /Library/Python/2.7/site-packages/pip-20.2b1-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
-------------------------------------------------------------
~ » pip3 --version                        littlechieh6@bogon
pip 20.2b1 from /Library/Python/2.7/site-packages/pip-20.2b1-py2.7.egg/pip (python 2.7)
-------------------------------------------------------------
~ » pip --version                         littlechieh6@bogon
pip 20.2b1 from /Library/Python/2.7/site-packages/pip-20.2b1-py2.7.egg/pip (python 2.7)

または、bootstrap.pypa.io Webサイトのget-pip.pyスクリプトを使用してpip3をインストールします。これにより、pipとpip3の両方がpip3になります。

~/Desktop » 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
  0     0    0     0    0     0      0      0 --:--:-- --:--:  1 1842k    1 20565    0     0  43294      0  0:00:43 --:--: 50 1842k   50  935k    0     0   626k      0  0:00:02  0:00:100 1842k  100 1842k    0     0   848k      0  0:00:02  0:00:02 --:--:--  848k
-------------------------------------------------------------
~/Desktop » sudo python3 get-pip.py
-------------------------------------------------------------
~/Desktop » pip --version                 littlechieh6@bogon
pip 20.3.3 from /Library/Python/3.8/site-packages/pip (python 3.8)
-------------------------------------------------------------
~/Desktop » pip3 --version                littlechieh6@bogon
pip 20.3.3 from /Library/Python/3.8/site-packages/pip (python 3.8)

Python2とPython3の実行場所を表示する

~ » which python3                         littlechieh6@bogon
/usr/bin/python3
-------------------------------------------------------------
~ » which python                          littlechieh6@bogon
/usr/bin/python
-------------------------------------------------------------
~ » ls -al /usr/bin/python3               littlechieh6@bogon
-rwxr-xr-x  1 root  wheel  31488 Sep 22 08:29 /usr/bin/python3
-------------------------------------------------------------
~ » ls -al /usr/bin/python                littlechieh6@bogon
lrwxr-xr-x  1 root  wheel  75 Jul  1 08:44 /usr/bin/python -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7

pipの実行場所を表示する

~ » which pip                             littlechieh6@bogon
/usr/local/bin/pip
-------------------------------------------------------------
~ » which pip3                            littlechieh6@bogon
/usr/local/bin/pip3
-------------------------------------------------------------
~ » ls -al /usr/local/bin/pip             littlechieh6@bogon
-rwxr-xr-x  1 root  admin  263 Dec 21 22:56 /usr/local/bin/pip
-------------------------------------------------------------
~ » ls -al /usr/local/bin/pip3            littlechieh6@bogon
-rwxr-xr-x  1 root  admin  263 Dec 21 22:56 /usr/local/bin/pip3

元のpipおよびpip3スクリプトの重要なポイントは、スクリプト#!を実行するためのパスを表すことです。pipとpip3はどちらもpython3によって実行されるためpip -Vpip3 -V

#!/Applications/Xcode.app/Contents/Developer/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

vim /usr/local/bin/pipインタプリタをPython2にポイントするために使用します

#!/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

三、効果

~ » pip -V                                littlechieh6@bogon
pip 20.2b1 from /Library/Python/2.7/site-packages/pip-20.2b1-py2.7.egg/pip (python 2.7)
-------------------------------------------------------------
~ » pip3 -V                               littlechieh6@bogon
pip 20.3.3 from /Library/Python/3.8/site-packages/pip (python 3.8)

リファレンスチュートリアル:

  1. https://blog.csdn.net/u014259820/article/details/100580970

おすすめ

転載: blog.csdn.net/qq_43085611/article/details/111502620