pip:帶你認識一個 Python 開發工作流程中的重要工具
摘要:許多Python項目使用pip包管理器來管理它們的依賴項。它包含在Python安裝程序中,是Python中依賴項管理的重要工具。
本文分享自華為雲社區《使用Python的pip管理項目的依賴關係》,作者:Yuchuan。
Python的標準包管理器是pip. 它允許您安裝和管理不屬於Python標準庫的包。如果您正在尋找介紹pip,那麼您來對地方了!
在本教程中,您將學習如何:
- pip在您的工作環境中設置
- 修復與使用相關的常見錯誤pip
- 安裝和卸載軟件包pip
- 使用需求文件管理項目的依賴關係
開始使用pip
那麼,具體是pip做什麼的呢?pip是Python的包管理器。這意味着它是一個允許您安裝和管理不作為標準庫的一部分分發的庫和依賴項的工具。pip這個名字是由IanBicking在2008年提出的:
我已將pyinstall重命名為新名稱:pip。名稱pip是[an]首字母縮寫詞和聲明:pip安裝包。(來源)
包管理非常重要,以至於Python的安裝程序pip從3.4和2.7.9版本開始就分別針對Python3和Python2進行了安裝。許多Python項目使用pip,這使其成為每個Pythonista的必備工具。
如果您來自另一種編程語言,那麼您可能對包管理器的概念很熟悉。JavaScript使用npm進行包管理,Ruby使用gem,.NET平台使用NuGet。在Python中,pip已經成為標準的包管理器。
pip在您的系統上查找
Python3安裝程序為您在pip系統上安裝Python時提供了安裝選項。事實上,pip使用Python安裝的選項是默認勾選的,所以pip安裝Python後應該就可以使用了。
注意:在某些Linux(Unix)系統(如Ubuntu)上,有pip一個名為.解釋器默認不安裝它。python3-pipsudoaptinstallpython3-pip
pip您可以通過在系統上查找pip3可執行文件來驗證它是否可用。在下面選擇您的操作系統並相應地使用您的平台特定命令:
- 視窗
- Linux+macOS
C:\>wherepip3
Windows上的where命令會告訴你在哪裡可以找到pip3.如果Windows找不到名為的可執行文件pip3,那麼您也可以嘗試在末尾pip不帶三個()的情況下查找。3
在Windows和Unix系統上,pip3可能會在多個位置找到。當您安裝了多個Python版本時,可能會發生這種情況。如果您在系統上的任何位置都找不到pip,那麼您可以考慮重新安裝pip。
除了pip直接運行系統,您還可以將其作為Python模塊運行。在下一節中,您將了解如何操作。
pip作為模塊運行
當您pip直接運行您的系統時,該命令本身不會顯示pip屬於哪個Python版本。不幸的是,這意味着您可以pip在不注意的情況下將包安裝到舊Python版本的站點包中。為了防止這種情況發生,您可以pip作為Python模塊運行:
$python3-mpip
請注意,您使用python3-m運行pip.該-m開關告訴Python將模塊作為python3解釋器的可執行文件運行。這樣,您可以確保您的系統默認Python3版本運行該pip命令。如果您想了解更多關於這種跑步方式的信息pip,那麼您可以閱讀BrettCannon關於使用python3-mpip.
有時您可能希望更加明確並將包限制為特定項目。在這種情況下,您應該pip在虛擬環境中運行。
pip在Python虛擬環境中使用
為避免將包直接安裝到系統Python安裝中,您可以使用虛擬環境。虛擬環境為您的項目提供了一個獨立的Python解釋器。您在此環境中使用的任何包都將獨立於您的系統解釋器。這意味着您可以將項目的依賴項與其他項目和整個系統分開。
pip在虛擬環境中使用具有三個主要優點。你可以:
- 確保您為手頭的項目使用正確的Python版本
- 確信您在運行時引用了正確的pip實例pip或pip3
- 在不影響其他項目的情況下為您的項目使用特定的包版本
venvPython3具有用於創建虛擬環境的內置模塊。此模塊可幫助您使用隔離的Python安裝創建虛擬環境。激活虛擬環境後,您可以將軟件包安裝到此環境中。您安裝到一個虛擬環境中的軟件包與系統上的所有其他環境隔離。
您可以按照以下步驟創建虛擬環境並驗證您是否pip在新創建的環境中使用該模塊:
- 視窗
- Linux+macOS
C:\>python-mvenvvenv C:\>venv\Scripts\activate.bat (venv)C:\>pip3--version pip21.2.3from...\lib\site-packages\pip(python3.10) (venv)C:\>pip--version pip21.2.3from...\lib\site-packages\pip(python3.10)
venv在這裡,您使用Python的內置venv模塊創建一個虛擬環境。然後你用source命令激活它。()您的姓名周圍的括號()venv表示您已成功激活虛擬環境。
最後,檢查激活的虛擬環境中的pip3和可執行文件的版本。pip兩者都指向同一個pip模塊,因此一旦您的虛擬環境被激活,您就可以使用pip或pip3。
pip發生錯誤時重新安裝
運行pip命令時,在某些情況下可能會出現錯誤。您的具體錯誤消息將取決於您的操作系統:
類似這樣的錯誤消息表明安裝pip.
注意:pip當命令不起作用時,在開始任何故障排除之前,您可以嘗試使用末尾pip3帶有三個()的命令。3
出現上面顯示的錯誤可能會令人沮喪,因為pip對於安裝和管理外部軟件包至關重要。一些常見問題與pip此工具在您的系統上的安裝方式有關。
儘管不同系統的錯誤消息不同,但它們都指向同一個問題:您的系統在變量pip中列出的位置中找不到。PATH在Windows上,PATH是系統變量的一部分。在macOS和Linux上,PATH是環境變量的一部分。您可以PATH使用以下命令檢查變量的內容:
- 視窗
- Linux+macOS
C:\>echo%PATH%
此命令的輸出將顯示磁盤上操作系統查找可執行程序的位置(目錄)列表。根據您的系統,位置可以用冒號(:)或分號(;)分隔。
默認情況下,安裝Python或創建虛擬環境後,包含pip可執行文件的目錄應該存在。PATH然而,失蹤pip是一個普遍的問題。兩種受支持的方法可以幫助您pip再次安裝並將其添加到您的PATH:
- ensurepip模塊_
- get-pip.py腳本_
自Python3.4以來,該ensurepip模塊一直是標準庫的一部分。添加它是為了為您提供一種直接的重新安裝方式,pip例如,如果您在安裝Python時跳過它或pip在某個時候卸載了它。在下面選擇您的操作系統並ensurepip相應地運行:
- 視窗
- Linux+macOS
C:\>python-mensurepip--upgrade
如果pip尚未安裝,則此命令會將其安裝在您當前的Python環境中。如果您處於活動的虛擬環境中,則該命令會安裝pip到該環境中。否則,它將pip全局安裝在您的系統上。該–upgrade選項確保pip版本與中聲明的版本相同ensurepip。
注意:模塊ensurepip不上網。可以安裝的最新版本pip是ensurepip捆綁在您環境的Python安裝中的版本。例如,ensurepip使用Python3.10.0運行會安裝pip21.2.3。如果你想要一個更新的pip版本,那麼你需要先運行ensurepip.之後,您可以pip手動更新到其最新版本。
修復pip安裝的另一種方法是使用get-pip.py腳本。該get-pip.py文件包含pip編碼ZIP文件的完整副本。您可以get-pip.py直接從PyPA引導頁面下載。一旦你的機器上有腳本,你就可以像這樣運行Python腳本:
- 視窗
- Linux+macOS
C:\>pythonget-pip.py
此腳本將在您當前的Python環境中安裝最新版本的pip、setuptools和。wheel如果您只想安裝pip,那麼您可以將–no-setuptools和–no-wheel選項添加到您的命令中。
如果上述方法都不起作用,那麼可能值得嘗試為您當前平台下載最新的Python版本。您可以遵循Python3安裝和設置指南,以確保pip已正確安裝並且可以正常工作。
安裝軟件包pip
Python被認為是一種包含電池的語言。這意味着Python標準庫包含一組廣泛的包和模塊,以幫助開發人員完成他們的編碼項目。
同時,Python擁有一個活躍的社區,該社區提供了更廣泛的包集,可以幫助您滿足開發需求。這些包發佈到Python包索引,也稱為PyPI(發音為PiePeaEye)。
PyPI託管大量包,包括開發框架、工具和庫。其中許多包為Python標準庫的功能提供了友好的接口。
使用Python包索引(PyPI)
PyPI託管的眾多軟件包之一稱為requests.該庫通過抽象HTTP請求的複雜性requests來幫助您與Web服務進行交互。您可以在其官方文檔網站上了解所有相關信息。requests
當你想requests在你的項目中使用這個包時,你必須首先將它安裝到你的環境中。如果你不想在你的系統Python站點包中安裝它,那麼你可以先創建一個虛擬環境,如上圖所示。
創建並激活虛擬環境後,命令行提示符會在括號內顯示虛擬環境的名稱。您從現在開始執行的任何pip命令都將在您的虛擬環境中發生。
要安裝軟件包,請pip提供一個install命令。您可以運行它來安裝requests軟件包:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstallrequests
在此示例中,您pip使用install命令運行,後跟要安裝的包的名稱。該pip命令在PyPI中查找包,解析其依賴項,並在當前Python環境中安裝所有內容以確保其requests正常工作。
該pipinstall<package>命令始終查找最新版本的軟件包並安裝它。它還搜索包元數據中列出的依賴項並安裝它們以確保包具有所需的所有要求。
也可以在一個命令中安裝多個包:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstallrptreecodetiming
通過鏈接包rptree並codetiming在pipinstall命令中,您可以一次安裝兩個包。您可以在pipinstall命令中添加任意數量的包。在這種情況下,requirements.txt文件可以派上用場。在本教程的後面部分,您將學習如何使用一個requirements.txt文件一次安裝多個包。
注意:除非包的特定版本號與本教程相關,否則您會注意到版本字符串採用x.y.z.這是一種佔位符格式,可以代表3.1.4、2.9或任何其他版本號。當您繼續操作時,終端中的輸出將顯示您的實際包版本號。
您可以使用該list命令顯示安裝在您的環境中的軟件包及其版本號:
- 視窗
- Linux+macOS
(venv)C:\>python-mpiplist PackageVersion --------------------------- certifix.y.z charset-normalizerx.y.z codetimingx.y.z idnax.y.z pipx.y.z requestsx.y.z rptreex.y.z setuptoolsx.y.z urllib3x.y.z
該piplist命令呈現一個表格,顯示當前環境中所有已安裝的包。上面的輸出使用x.y.z佔位符格式顯示包的版本。在您的環境中運行該piplist命令時,pip會顯示您為每個包安裝的特定版本號。
要獲取有關特定包的更多信息,您可以使用以下show命令查看包的元數據pip:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipshowrequests Name:requests Version:x.y.z Summary:PythonHTTPforHumans. ... Requires:certifi,idna,charset-normalizer,urllib3 Required-by:
您系統上此命令的輸出將列出包的元數據。該Requires行列出了包,例如certifi、idna、charset-normalizer和urllib3。這些是安裝的,因為requests依賴於它們才能正常工作。
現在您已經安裝requests了它及其依賴項,您可以像導入Python代碼中的任何其他常規包一樣導入它。啟動交互式Python解釋器並導入requests包:
>>> >>>importrequests >>>requests.__version__ "x.y.z"
啟動交互式Python解釋器後,您導入了requests模塊。通過調用requests.__version__,您確認您正在requests虛擬環境中使用該模塊。
使用自定義包索引
默認情況下,pip使用PyPI查找包。但pip也為您提供了定義自定義包索引的選項。
pip當PyPI域在您的網絡上被阻止或您想要使用不公開可用的包時,使用自定義索引會很有幫助。有時系統管理員也會創建自己的內部包索引,以更好地控制pip公司網絡上的用戶可以使用哪些包版本。
自定義包索引必須符合PEP503–SimpleRepositoryAPItoworkwithpip.您可以通過訪問PyPI簡單索引來了解此類API(應用程序編程接口)的外觀——但請注意,這是一個包含許多難以解析的內容的大頁面。任何遵循相同API的自定義索引都可以作為該選項的目標。除了鍵入,您還可以使用速記。–index-url–index-url-i
例如,要從TestPyPIrptree包索引安裝該工具,您可以運行以下命令:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstall-ihttps://test.pypi.org/simple/rptree
使用該-i選項,您告訴pip查看不同的包索引而不是默認的PyPI。在這裡,您是rptree從TestPyPI而不是從PyPI安裝的。您可以使用TestPyPI來微調Python包的發佈過程,而不會弄亂PyPI上的生產包索引。
如果您需要永久使用替代索引,則可以在配置文件index-url中設置該選項。該文件名為,您可以通過運行以下命令找到它的位置:pippip.conf
- 視窗
- Linux+macOS
(venv)C:\>python-mpipconfiglist-vv
使用該pipconfiglist命令,您可以列出活動配置。此命令僅在您設置了自定義配置時才會輸出。否則,輸出為空。那時,additive–verbose或-vv,選項可能會有所幫助。添加時-vv,pip會顯示它在哪裡查找不同的配置級別。
如果要添加pip.conf文件,則可以選擇pipconfiglist-vv列出的位置之一。具有自定義包索引的pip.conf文件如下所示:
#pip.conf [global] index-url=https://test.pypi.org/simple/
當你有這樣的pip.conf文件時,pip將使用定義index-url的來查找包。使用此配置,您無需–index-url在命令中使用選項pipinstall來指定您只需要可以在TestPyPI的簡單API中找到的包。
從GitHub存儲庫安裝包
您不僅限於託管在PyPI或其他包索引上的包。pip還提供了從GitHub存儲庫安裝包的選項。但即使包託管在PyPI上,例如RealPython目錄樹生成器,您也可以選擇從其Git存儲庫安裝它:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstallgit+https://github.com/realpython/rptree
使用該git+https方案,您可以指向包含可安裝包的Git存儲庫。您可以通過運行交互式Python解釋器並導入來驗證您是否正確安裝了包rptree:
>>> >>>importrptree >>>rptree.__version__ "x.y.z"
啟動交互式Python解釋器後,導入rptree模塊。通過調用rptree.__version__,您可以驗證您正在使用rptree基於虛擬環境的模塊。
注意:如果您使用的是Git以外的版本控制系統(VCS),pip您是否了解過。要了解如何使用pipMercurial、Subversion或Bazaar,請查看文檔的VCS支持章節pip。
如果包不是託管在PyPI上但具有遠程Git存儲庫,則從Git存儲庫安裝包會很有幫助。您指向的遠程存儲庫pip甚至可以託管在公司Intranet上的內部Git服務器上。當您在防火牆後面或對Python項目有其他限制時,這可能很有用。
以可編輯模式安裝包以簡化開發
在處理自己的包時,以可編輯模式安裝它是有意義的。通過這樣做,您可以像在任何其他包中一樣使用命令行,同時處理源代碼。一個典型的工作流程是首先克隆存儲庫,然後pip將其作為可編輯包安裝到您的環境中:
- 視窗
- Linux+macOS
1C:\>gitclonehttps://github.com/realpython/rptree 2C:\>cdrptree 3C:\rptree>python3-mvenvvenv 4C:\rptree>venv\Scripts\activate.bat 5(venv)C:\rptree>python-mpipinstall-e.
使用上面的命令,您將rptree包安裝為可編輯模塊。以下是您剛剛執行的操作的分步細分:
- 第1行克隆了rptree包的Git存儲庫。
- 第2行將工作目錄更改為rptree/.
- 第3行和第4行創建並激活了一個虛擬環境。
- 第5行將當前目錄的內容安裝為可編輯的包。
-e選項是選項的簡寫–editable。當您使用帶有的-e選項時pipinstall,您告訴pip您要以可編輯模式安裝包。不使用包名,而是使用點(.)來指向pip當前目錄。
如果您沒有使用該-e標誌,pip則通常會將軟件包安裝到您的環境site-packages/文件夾中。當您以可編輯模式安裝包時,您將在站點包中創建指向本地項目路徑的鏈接:
~/rptree/venv/lib/python3.10/site-packages/rptree.egg-link
使用pipinstall帶有標誌的命令-e只是pipinstall提供的眾多選項之一。您可以查看文檔中的pipinstall示例。pip在那裡,您將學習如何安裝特定版本的包或指向pip不是PyPI的不同索引。
在下一部分中,您將了解需求文件如何幫助您的pip工作流程。
使用需求文件
該pipinstall命令始終安裝包的最新發佈版本,但有時您的代碼需要特定的包版本才能正常工作。
您希望創建用於開發和測試應用程序的依賴項和版本的規範,以便在生產中使用該應用程序時不會感到意外。
固定要求
當您與其他開發人員共享您的Python項目時,您可能希望他們使用與您正在使用的相同版本的外部包。可能某個包的特定版本包含您依賴的新功能,或者您正在使用的包的版本與以前的版本不兼容。
這些外部依賴項也稱為需求。您經常會發現Python項目將其需求固定在一個名為requirements.txt或類似的文件中。需求文件格式允許您精確指定應該安裝哪些包和版本。
運行piphelp顯示有一個freeze命令以需求格式輸出已安裝的包。您可以使用此命令,將輸出重定向到文件以生成需求文件:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipfreeze>requirements.txt
requirements.txt此命令在您的工作目錄中創建一個文件,其內容如下:
certifi==x.y.z charset-normalizer==x.y.z idna==x.y.z requests==x.y.z urllib3==x.y.z
請記住,x.y.z上面顯示的是包版本的佔位符格式。您的requirements.txt文件將包含真實的版本號。
該freeze命令將當前安裝的包的名稱和版本轉儲到標準輸出。您可以將輸出重定向到一個文件,您以後可以使用該文件將您的確切要求安裝到另一個系統中。您可以隨意命名需求文件。然而,一個被廣泛採用的約定是命名它requirements.txt。
當您想在另一個系統中複製環境時,您可以運行pipinstall,使用-r開關指定需求文件:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstall-rrequirements.txt
在上面的命令中,您告訴pip將列出的軟件包安裝requirements.txt到當前環境中。包版本將匹配requirements.txt文件包含的版本約束。您可以運行piplist以顯示剛剛安裝的軟件包及其版本號:
- 視窗
- Linux+macOS
(venv)C:\>python-mpiplist PackageVersion --------------------------- certifix.y.z charset-normalizerx.y.z idnax.y.z pipx.y.z requestsx.y.z setuptoolsx.y.z urllib3x.y.z
現在您已準備好分享您的項目!您可以提交requirements.txt到Git等版本控制系統,並使用它在其他機器上複製相同的環境。但是等等,如果為這些軟件包發佈了新的更新會發生什麼?
微調要求
對包的版本和依賴項進行硬編碼的問題在於,包會經常使用錯誤和安全修復進行更新。您可能希望在這些更新發佈後立即利用它們。
需求文件格式允許您使用比較運算符指定依賴版本,這使您可以靈活地確保更新包,同時仍定義包的基本版本。
requirements.txt在您喜歡的編輯器中打開並將相等運算符(==)轉換為大於或等於運算符(>=),如下例所示:
#requirements.txt certifi>=x.y.z charset-normalizer>=x.y.z idna>=x.y.z requests>=x.y.z urllib3>=x.y.z
您可以將比較運算符更改>=為告訴pip安裝已發佈的確切或更高版本。當您使用該requirements.txt文件設置新環境時,pip查找滿足要求的最新版本並安裝它。
接下來,您可以通過使用開關或簡寫運行install命令來升級需求文件中的軟件包:–upgrade-U
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstall-U-rrequirements.txt
如果列出的軟件包有新版本可用,則該軟件包將被升級。
在理想情況下,新版本的包將向後兼容並且永遠不會引入新的錯誤。不幸的是,新版本可能會引入會破壞您的應用程序的更改。為了微調您的需求,需求文件語法支持額外的版本說明符。
想像一下,發佈了一個新版本,3.0但requests引入了一個不兼容的更改,從而破壞了您的應用程序。您可以修改需求文件以防止3.0或更高版本被安裝:
#requirements.txt certifi==x.y.z charset-normalizer==x.y.z idna==x.y.z requests>=x.y.z,<3.0 urllib3==x.y.z
更改包的版本說明符可確保不會安裝requests任何大於或等於的版本。3.0該pip文檔提供了有關需求文件格式的大量信息,您可以查閱它以了解更多信息。
分離生產和開發依賴
並非您在應用程序開發過程中安裝的所有軟件包都是生產依賴項。例如,您可能想要測試您的應用程序,因此您需要一個測試框架。一個流行的測試框架是pytest.您想將它安裝在您的開發環境中,但您不希望它在您的生產環境中,因為它不是生產依賴項。
您創建第二個需求文件,requirements_dev.txt以列出用於設置開發環境的其他工具:
#requirements_dev.txt
pytest>=x.y.z
擁有兩個需求文件將要求您使用pip它們來安裝它們,requirements.txt並且requirements_dev.txt.幸運的是,pip允許您在需求文件中指定其他參數,因此您可以修改requirements_dev.txt以安裝生產requirements.txt文件中的需求:
#requirements_dev.txt -rrequirements.txt pytest>=x.y.z
請注意,您使用相同的-r開關來安裝生產requirements.txt文件。現在,在您的開發環境中,您只需運行這個命令即可安裝所有要求:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstall-rrequirements_dev.txt
因為requirements_dev.txt包含該-rrequirements.txt行,所以您不僅要安裝,還要pytest安裝requirements.txt.在生產環境中,僅安裝生產要求就足夠了:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipinstall-rrequirements.txt
使用此命令,您可以安裝requirements.txt.與您的開發環境相比,您的生產環境不會pytest安裝。
生產冷凍要求
您創建了生產和開發需求文件並將它們添加到源代碼控制中。這些文件使用靈活的版本說明符來確保您利用依賴項發佈的錯誤修復。您還測試了您的應用程序,現在可以將其部署到生產環境中。
您知道所有測試都通過並且應用程序與您在開發過程中使用的依賴項一起工作,因此您可能希望確保將相同版本的依賴項部署到生產環境。
當前版本說明符不保證相同的版本將部署到生產中,因此您希望在發佈項目之前凍結生產需求。
根據當前需求完成開發後,創建當前項目新版本的工作流程如下所示:
通過這樣的工作流程,該requirements_lock.txt文件將包含準確的版本說明符,並可用於複製您的環境。您已確保當您的用戶將列出的軟件包安裝requirements_lock.txt到他們自己的環境中時,他們將使用您希望他們使用的版本。
凍結您的需求是確保您的Python項目在用戶環境中以與在您的環境中相同的方式工作的重要步驟。
卸載軟件包pip
有時,您必須卸載一個軟件包。要麼你找到了一個更好的庫來替換它,要麼它是你不需要的東西。卸載軟件包可能有點棘手。
請注意,當您安裝時requests,您還pip必須安裝其他依賴項。您安裝的包越多,多個包依賴相同依賴項的機會就越大。這就是show命令inpip派上用場的地方。
在卸載軟件包之前,請確保運行該show軟件包的命令:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipshowrequests Name:requests Version:2.26.0 Summary:PythonHTTPforHumans. Home-page:https://requests.readthedocs.io Author:KennethReitz Author-email:[email protected] License:Apache2.0 Location:.../python3.9/site-packages Requires:certifi,idna,charset-normalizer,urllib3 Required-by:
注意最後兩個字段Requires和Required-by。該show命令告訴您requests需要certifi、idna、charset-normalizer和urllib3。您可能也想卸載這些。請注意,requests任何其他軟件包都不需要。所以卸載它是安全的。
您應該show針對所有依賴項運行該命令,requests以確保沒有其他庫也依賴於它們。一旦了解了要卸載的軟件包的依賴順序,就可以使用以下uninstall命令刪除它們:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipuninstallcertifi
該uninstall命令向您顯示將被刪除的文件並要求確認。如果您確定要刪除包,因為您已經檢查了它的依賴關係並且知道沒有其他東西在使用它,那麼您可以傳遞一個-y開關來禁止文件列表和確認對話框:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipuninstallurllib3-y
在這裡你卸載urllib3。使用該-y開關,您可以抑制詢問您是否要卸載此軟件包的確認對話框。
在一次調用中,您可以指定要卸載的所有包:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipuninstall-ycharset-normalizeridnarequests
您可以將多個包傳遞給pipuninstall命令。如果您沒有添加任何額外的開關,那麼您需要確認卸載每個包。通過傳遞-y開關,您可以在沒有任何確認對話框的情況下將它們全部卸載。
您還可以通過提供-r<requirementsfile>選項來卸載需求文件中列出的所有包。此命令將提示每個包的確認請求,但您可以使用-y開關抑制它:
- 視窗
- Linux+macOS
(venv)C:\>python-mpipuninstall-rrequirements.txt-y
請記住始終檢查要卸載的軟件包的依賴關係。您可能想卸載所有依賴項,但卸載其他人使用的包會破壞您的工作環境。因此,您的項目可能不再正常工作。
如果您在虛擬環境中工作,只需創建一個新的虛擬環境就可以減少工作量。然後您可以安裝您需要的軟件包,而不是嘗試卸載您不需要的軟件包。但是,pipuninstall當您需要從系統Python安裝中卸載包時,它會非常有用。pipuninstall如果您不小心在系統範圍內安裝了軟件包,使用是一種整理系統的好方法。
探索替代方案pip
Python社區提供了出色的工具和庫供您在pip.pip這些包括嘗試簡化和改進包管理的替代方案。
以下是可用於Python的其他一些包管理工具:
僅pip捆綁在標準Python安裝中。如果您想使用上面列出的任何替代方案,則必須遵循其文檔中的安裝指南。有這麼多選擇,您一定會找到適合您的編程之旅的工具!
結論
許多Python項目使用pip包管理器來管理它們的依賴項。它包含在Python安裝程序中,是Python中依賴項管理的重要工具。
在本教程中,您學習了如何:
- pip在您的工作環境中設置和運行
- 修復與使用相關的常見錯誤pip
- 安裝和卸載軟件包pip
- 定義項目和應用程序的要求
- 在需求文件中固定依賴項
此外,您還了解了使依賴項保持最新的重要性以及pip可以幫助您管理這些依賴項的替代方法。
通過仔細查看pip,您已經探索了Python開發工作流程中的一個重要工具。使用,您可以安裝和管理在PyPIpip上找到的任何其他包。您可以使用來自其他開發人員的外部包作為需求,並專註於使您的項目獨一無二的代碼。