[英]Difference between pip3 and python3 -m pip
我正在嘗試使用 pip 和 python3 安裝一些軟件包。 我使用的是 MacOS,所以默認情況下,當我運行 pip 時,它使用我的 Python 2 版本。
我已經能夠使用以下方法在 python 3 中安裝一個包:
$ pip3 install package_name
但是,我可以通過(至少看起來)來做同樣的事情:
$ python3 -m pip install package_name
我想知道pip3
和python3 -m pip
是否具有相同的效果。
他們是一樣的。 如果您查看 bin 文件夾中的 pip3 文件,它會從 pip 模塊調用main
函數。
pip3 install package_name
運行 bin 文件夾中的 pip3 文件:
# bin/pip3
# or bin/pip if using pip install package_name
import re
import sys
from pip import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
python3 -m pip install package_name
運行pip模塊的__init__.py
文件。
# pip/__init__.py
if __name__ == '__main__':
sys.exit(main())
它們都運行相同的main()
函數
正如@tihorn 所說, pip3
和python3 -m pip
應該是一樣的。 至少有一個例外:如果它們不在同一路徑中。 我有以下設置:
$ which pip3
/usr/bin/pip3
$ which python3
/home/username/anaconda3/bin/python3
使用 pip3 安裝模塊並使用pip3 freeze
驗證后,我在運行python3 my_script.py
或python3 -c 'import my_module'
時無法訪問它們。 我收到ModuleNotFound
錯誤。
其他答案在技術上是正確的,但有點不清楚為什么Python 同時具有pip3
和python3 -m pip
:
如果您的機器上有多個 Python 安裝,使用pip3
全局安裝包可能會產生歧義。
許多人在升級計算機的操作系統后最終安裝了多個 Python。 操作系統升級通常會安裝一個新的 Python,但它們不會冒清除舊 Python 和破壞計算機上現有程序的風險。
由於這些原因,在我自己的計算機上,我總是安裝特定版本,例如: python3.8 -m pip
。 當我編寫 Makefile 或構建腳本以分發給其他人時,我默認使用python3 -m pip
但讓用戶可以選擇用他們自己的解釋器路徑替換python3
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.