簡體   English   中英

pip3 和 python3 -m pip 的區別

[英]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

我想知道pip3python3 -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 所說, pip3python3 -m pip應該是一樣的。 至少有一個例外:如果它們不在同一路徑中。 我有以下設置:

$ which pip3
/usr/bin/pip3
$ which python3
/home/username/anaconda3/bin/python3

使用 pip3 安裝模塊並使用pip3 freeze驗證后,我在運行python3 my_script.pypython3 -c 'import my_module'時無法訪問它們。 我收到ModuleNotFound錯誤。

其他答案在技術上是正確的,但有點不清楚為什么Python 同時具有pip3python3 -m pip

如果您的機器上有多個 Python 安裝,使用pip3全局安裝包可能會產生歧義

許多人在升級計算機的操作系統后最終安裝了多個 Python。 操作系統升級通常會安裝一個新的 Python,但它們不會冒清除舊 Python 和破壞計算機上現有程序的風險。

由於這些原因,在我自己的計算機上,我總是安裝特定版本,例如: python3.8 -m pip 當我編寫 Makefile 或構建腳本以分發給其他人時,我默認使用python3 -m pip但讓用戶可以選擇用他們自己的解釋器路徑替換python3

暫無
暫無

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

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