為什么您應該使用`python -m pip`


python -m pip是什么?

 

首先,python -m pip會使用您指定為python的Python解釋器來執行pip。因此,/usr/bin/python3.7 -m pip表示您正在執行位於/usr/bin/python3.7的解釋器的pip。如果您不熟悉這個標志以及它是如何工作的,您可以閱讀有關-m的文檔(它非常方便)。

 

為什么使用 python -m pip 而不是 pip/pip3?

 

所以您可能會說,“好的,但是我不能通過執行pip命令來運行pip嗎?”答案是“可以,但是您對它的控制會更少”,我將用一個例子來解釋我所說的“控制會更少”是什么意思。

 

假設我已經安裝了Python的兩個版本,比如Python 3.7和3.8(由於Python會預先安裝在macOS和Linux上,這對人們來說是很常見的,更不用說您之前已經安裝了Python 3.7,您還是會安裝Python 3.8來使用它)。現在,如果您在您的終端中鍵入pip,那么它將為哪個Python解釋器安裝庫呢?

 

在沒有更多的細節的情況下,您的答案是您不知道。首先,您必須知道我的PATH設置是什么,比如/usr/bin是在/usr/local/bin之前還是之后(這些是安裝Python的常見位置,通常優先安裝於/usr/local/目錄)。好的,只要您記得您安裝Python 3.7和3.8的地方,它們是不同的目錄,您就會知道哪個版本的pip在PATH上先出現。假設您都是手動安裝它們的,也許您的操作系統附帶了Python 3.7.3,而您又安裝了Python 3.7.5。在這種情況下,Python的兩個版本都安裝在/usr/local/bin中。現在您能告訴我pip與哪個解釋器相關聯嗎?

 

答案是您仍然不知道。除非您知道您在什么時候安裝了每個版本,從而就會知道被寫到/usr/local/bin/pip的最后一個pip副本是什么,否則您就不知道哪個解釋器的pip將被用於執行pip命令。現在您可能會說,“我總是會安裝最新的版本,這意味着Python 3.8.0是最后安裝的,因為它比3.7.5更新。”好的,但是當Python 3.7.6出現時會發生什么呢?您的pip命令將會從使用Python 3.8變為使用Python 3.7。

 

但是當您使用python -m pip時,而python是您希望使用的特定解釋器時,所有上述的模糊性都消失了。如果我使用python3.8 -m pip,那么我就知道pip將會在我的Python 3.8解釋器中使用和安裝(如果我使用的是python3.7,那么情況也一樣)。

 

如果您是在Windows上運行,使用python -m pip還有一個額外的好處,那就是它可以讓pip自我更新。基本上,當您執行pip install --upgrade pip時,系統會認為pip.exe正在運行,因此,Windows是不會讓您覆蓋pip.exe的。但是,如果您執行python -m pip install --upgrade pip,就可以避免這個問題,因為正在運行的是python.exe,不是pip.exe。

 轉載:https://mp.weixin.qq.com/s/-gpqtGwiGYuGLHrlcjUZ1A


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM