在本教程中,我們將學(xué)習(xí)如何使用pip來(lái)安裝和管理Python軟件包。
pip是Python的標(biāo)準(zhǔn)軟件包管理器。我們可以pip用來(lái)安裝Python標(biāo)準(zhǔn)庫(kù)中沒(méi)有的其他軟件包。例如,
pip install numpy
如果我們?cè)谙到y(tǒng)上安裝了pip,那么這個(gè)命令將安裝numpy庫(kù)。
pip預(yù)先安裝在Python 3.4或更早版本上。我們可以通過(guò)在命令控制臺(tái)中使用以下命令來(lái)檢查pip是否已安裝:
pip --version
如果pip系統(tǒng)中已經(jīng)存在,pip則會(huì)顯示相應(yīng)的版本,例如:
pip 19.3.1 from C:\Python37\lib\site-packages\pip (python 3.7)
如果我們使用的是Python的舊版本或pip由于其他原因未安裝,請(qǐng)按照此鏈接中所述的步驟進(jìn)行操作:pip安裝
pip是一個(gè)命令行程序。安裝后,將pip添加一個(gè)命令,該命令可與命令提示符一起使用。
pip的基本語(yǔ)法是:
pip <pip arguments>
除了標(biāo)準(zhǔn)的Python庫(kù)之外,Python社區(qū)還為各種開(kāi)發(fā)框架,工具和庫(kù)量身定制了許多軟件包。
這些軟件包中的大多數(shù)都正式托管并發(fā)布到Python軟件包索引(PyPI)中。pip允許我們下載并安裝這些軟件包。
install命令用于使用pip安裝軟件包。 讓我們舉個(gè)實(shí)例:
假設(shè)我們要安裝requests,一個(gè)流行的Python HTTP庫(kù)。我們可以在以下命令的幫助下進(jìn)行操作。
pip install requests
輸出結(jié)果
Collecting requests Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl Collecting chardet<3.1.0,>=3.0.2 Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 Using cached https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl Collecting idna<2.9,>=2.5 Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl Collecting certifi>=2017.4.17 Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB) Installing collected packages: chardet, urllib3, idna, certifi, requests Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.7
在這里,我們可以看到install命令已與pip一起使用,后跟我們要安裝的軟件包的名稱(requests)。
pip還安裝了此軟件包所需的所有其他依賴項(xiàng),例如chardet,urllib3和certifi。
如果以最小形式使用pip install,則pip將下載軟件包的最新版本。
有時(shí),只有特定版本與其他程序兼容。因此,我們可以通過(guò)以下方式定義軟件包的版本:
pip install requests==2.21.0
在這里,我們已經(jīng)安裝requests庫(kù)的2.21.0版本。
pip list命令可用于列出當(dāng)前Python環(huán)境中的所有可用軟件包。
pip list
輸出結(jié)果
Package Version ---------- ---------- certifi 2019.11.28 chardet 3.0.4 idna 2.8 pip 19.3.1 requests 2.22.0 setuptools 45.0.0 urllib3 1.25.7 wheel 0.33.6
pip show命令顯示有關(guān)一個(gè)或多個(gè)已安裝軟件包的信息。讓我們看一個(gè)實(shí)例:
pip show requests
輸出結(jié)果
Name: requests Version: 2.22.0 Summary: Python HTTP for Humans. Home-page: http://python-requests.org Author: Kenneth Reitz Author-email: me@kennethreitz.org License: Apache 2.0 Location: c:\users\dell\desktop\venv\lib\site-packages Requires: certifi, chardet, urllib3, idna Required-by:
在此,show命令顯示有關(guān)requests庫(kù)的信息。注意上面輸出中的Requires和Required-by列。
Requires列顯示requests庫(kù)需要哪些依賴項(xiàng)。 并且,Required-by列顯示了需要requests的軟件包。
我們可以通過(guò)卸載包pip與pip uninstall命令。
假設(shè)我們r(jià)equests要從當(dāng)前的Python環(huán)境中刪除該庫(kù)。我們可以通過(guò)以下方式做到這一點(diǎn):
pip uninstall requests
輸出結(jié)果
Uninstalling requests-2.22.0: Would remove: C:\Python37\lib\site-packages\requests-2.22.0.dist-info\* C:\Python37\lib\site-packages\requests\* Proceed (y/n)? y Successfully uninstalled requests-2.22.0
如我們所見(jiàn),requests包在最終提示后被刪除。
注意:即使刪除了指定的包,也不會(huì)刪除作為依賴項(xiàng)安裝的包。在這種情況下,requests庫(kù)的依賴項(xiàng)(chardet、urllib3和certifi)不會(huì)被卸載。
如果還需要?jiǎng)h除程序包的依賴項(xiàng),則可以使用pip show命令查看已安裝的程序包并手動(dòng)刪除它們。
包含所有軟件包名稱的文件也可以用于批量安裝Python軟件包。
讓我們看一個(gè)實(shí)例:
假設(shè)我們有一個(gè)文件requirements.txt,其中包含以下條目:
numpy Pillow pygame
我們可以使用中的單個(gè)命令來(lái)安裝所有這些軟件包及其依賴項(xiàng)pip。
pip install -r requirements.txt
輸出結(jié)果
Collecting numpy Using cached https://files.pythonhosted.org/packages/a9/38/f6d6d8635d496d6b4ed5d8ca4b9f193d0edc59999c3a63779cbc38aa650f/numpy-1.18.1-cp37-cp37m-win_amd64.whl Collecting Pillow Using cached https://files.pythonhosted.org/packages/88/6b/66f502b5ea615f69433ae1e23ec786b2cdadbe41a5cfb1e1fabb4f9c6ce9/Pillow-7.0.0-cp37-cp37m-win_amd64.whl Collecting pygame Using cached https://files.pythonhosted.org/packages/ed/56/b63ab3724acff69f4080e54c4bc5f55d1fbdeeb19b92b70acf45e88a5908/pygame-1.9.6-cp37-cp37m-win_amd64.whl Installing collected packages: numpy, Pillow, pygame Successfully installed Pillow-7.0.0 numpy-1.18.1 pygame-1.9.6
在這里,我們對(duì)pip使用了相同的install命令。
但是,附加參數(shù)-r指定pip我們正在傳遞需求文件而不是包名稱。
作為手動(dòng)創(chuàng)建需求文件的代替方法,pip提供了freeze命令。讓我們看看如何使用這個(gè)命令。
假設(shè)我們當(dāng)前的Python環(huán)境具有以下軟件包??梢允褂胮ip list顯示。
Package Version ---------- ------- numpy 1.17.0 Pillow 6.1.0 pip 19.3.1 pygame 1.9.6 setuptools 45.0.0 wheel 0.33.6
使用freeze命令列出了Python未預(yù)裝的軟件包。
pip freeze
輸出結(jié)果
numpy==1.17.0 Pillow==6.1.0 pygame==1.9.6
pip freeze命令以需求文件的格式顯示軟件包及其版本。
因此,可以使用以下命令將該輸出重定向以創(chuàng)建需求文件:
pip freeze > requirements.txt
在工作目錄中創(chuàng)建一個(gè)新的requirements.txt文件。以后可以在其他Python環(huán)境中使用它來(lái)安裝特定版本的軟件包。
search命令用于在命令提示符下搜索軟件包。讓我們看一個(gè)實(shí)例:
pip search pygame
輸出結(jié)果
pygame-anisprite (1.0.0) - Animated sprites for PyGame! pygame-ai (0.1.2) - Videogame AI package for PyGame pygame-engine (0.0.6) - Simple pygame game engine. pygame-assets (0.1) - Assets manager for Pygame apps pygame-gui (0.4.2) - A GUI module for pygame 2 pygame-spritesheet (0.2.0) - Python pygame extension that provides SpriteSheet class. pygame-minesweeper (1.0) - Minesweeper game implemented in python using pygame pygame-menu (2.1.0) - A menu for pygame, simple, lightweight and easy to use pygame-plot (0.1) - Quick visualization of data using pygame with a matplotlib style pygame (1.9.6) - Python Game Development ...
在這里,我們搜索了一個(gè)名為的庫(kù)pygame。顯示與關(guān)鍵字匹配的所有其他軟件包。此命令有助于查找相關(guān)軟件包。
要了解更多信息pip,請(qǐng)?jiān)L問(wèn):Python pip(官方文檔)