為什麼您應該使用 python m pip

2022-08-20 17:15:10 字數 1323 閱讀 6876

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

所以您可能會說,「好的,但是我不能通過執行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。

**:

為什麼是 Python m ?

m 的含義表示將庫當作指令碼來執行。python file.py 正常的執行python指令碼似乎都是這個樣子,甚至於有些小夥伴根本不曉得 m是個什麼玩意。在help 中對 m的解釋為 將檔案看作指令碼來執行。什麼叫當成指令碼來執行呢?我們來看看 編寫簡單的測試指令碼bar.py import sy...

為什麼應該寫部落格

1,鍛鍊文筆。如同讀書學習一樣,文筆也是一輩子的事情,通過不斷的寫作,讓自己的寫作能力越來越強,對工作創業都會很有幫助。2,梳理思路。寫下來的過程,就是在梳理自己的思路。一件事情只有能夠寫的清楚明白,才說明自己理解透徹了,寫作讓思路更清晰。4,打造影響。持續輸出工作上的經驗和思考,在行業內打造出自己...

為什麼應該在 v for 中使用 key?

引用 vue 官方文件的原話 vue 會盡可能高效地渲染元素,通常會復用已有元素而不是從頭開始渲染。這樣容易導致一些問題。因為類似 這樣的元素都有乙個internal state 儲存著元素的值,而在元素復用時,這個值是會得到保留的。我們來看乙個登陸方式切換的例子 v if isuser login...