在本教程中,我们将学习如何使用pip来安装和管理Python软件包。
pip是Python的标准软件包管理器。我们可以pip用来安装Python标准库中没有的其他软件包。例如,
pip install numpy
如果我们在系统上安装了pip,那么这个命令将安装numpy库。
pip预先安装在Python 3.4或更早版本上。我们可以通过在命令控制台中使用以下命令来检查pip是否已安装:
pip --version
如果pip系统中已经存在,pip则会显示相应的版本,例如:
pip 19.3.1 from C:\Python37\lib\site-packages\pip (python 3.7)
如果我们使用的是Python的旧版本或pip由于其他原因未安装,请按照此链接中所述的步骤进行操作:pip安装
pip是一个命令行程序。安装后,将pip添加一个命令,该命令可与命令提示符一起使用。
pip的基本语法是:
pip <pip arguments>
除了标准的Python库之外,Python社区还为各种开发框架,工具和库量身定制了许多软件包。
这些软件包中的大多数都正式托管并发布到Python软件包索引(PyPI)中。pip允许我们下载并安装这些软件包。
install命令用于使用pip安装软件包。 让我们举个实例:
假设我们要安装requests,一个流行的Python HTTP库。我们可以在以下命令的帮助下进行操作。
pip install requests
输出结果
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还安装了此软件包所需的所有其他依赖项,例如chardet,urllib3和certifi。
如果以最小形式使用pip install,则pip将下载软件包的最新版本。
有时,只有特定版本与其他程序兼容。因此,我们可以通过以下方式定义软件包的版本:
pip install requests==2.21.0
在这里,我们已经安装requests库的2.21.0版本。
pip list命令可用于列出当前Python环境中的所有可用软件包。
pip list
输出结果
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命令显示有关一个或多个已安装软件包的信息。让我们看一个实例:
pip show requests
输出结果
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命令显示有关requests库的信息。注意上面输出中的Requires和Required-by列。
Requires列显示requests库需要哪些依赖项。 并且,Required-by列显示了需要requests的软件包。
我们可以通过卸载包pip与pip uninstall命令。
假设我们requests要从当前的Python环境中删除该库。我们可以通过以下方式做到这一点:
pip uninstall requests
输出结果
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
如我们所见,requests包在最终提示后被删除。
注意:即使删除了指定的包,也不会删除作为依赖项安装的包。在这种情况下,requests库的依赖项(chardet、urllib3和certifi)不会被卸载。
如果还需要删除程序包的依赖项,则可以使用pip show命令查看已安装的程序包并手动删除它们。
包含所有软件包名称的文件也可以用于批量安装Python软件包。
让我们看一个实例:
假设我们有一个文件requirements.txt,其中包含以下条目:
numpy Pillow pygame
我们可以使用中的单个命令来安装所有这些软件包及其依赖项pip。
pip install -r requirements.txt
输出结果
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
在这里,我们对pip使用了相同的install命令。
但是,附加参数-r指定pip我们正在传递需求文件而不是包名称。
作为手动创建需求文件的代替方法,pip提供了freeze命令。让我们看看如何使用这个命令。
假设我们当前的Python环境具有以下软件包。可以使用pip 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未预装的软件包。
pip freeze
输出结果
numpy==1.17.0 Pillow==6.1.0 pygame==1.9.6
pip freeze命令以需求文件的格式显示软件包及其版本。
因此,可以使用以下命令将该输出重定向以创建需求文件:
pip freeze > requirements.txt
在工作目录中创建一个新的requirements.txt文件。以后可以在其他Python环境中使用它来安装特定版本的软件包。
search命令用于在命令提示符下搜索软件包。让我们看一个实例:
pip search pygame
输出结果
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 ...
在这里,我们搜索了一个名为的库pygame。显示与关键字匹配的所有其他软件包。此命令有助于查找相关软件包。
要了解更多信息pip,请访问:Python pip(官方文档)