什么是 pip?
pip
是 Python 的标准包管理器。我们可以使用 pip
来安装 Python 标准库中没有的额外包。例如,
pip install numpy
如果我们在系统上安装了 pip
,此命令将安装 numpy
库。
如何安装 pip?
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 <pip arguments>
使用 pip 安装包
除了标准 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
在这里,我们可以看到 pip
已与 install
命令一起使用,后跟我们要安装的包的名称 (requests
)。
此包所需的所有其他依赖项(如 chardet
、urllib3
和 certifi
)也由 pip
安装。
指定包版本
当 pip
install
以其最小形式使用时,pip
会下载最新版本的包。
有时,只有特定版本与其他程序兼容。因此,我们可以通过以下方式定义包的版本
pip install requests==2.21.0
在这里,我们安装了 requests
库的 2.11.0 版本。
使用 pip 列出已安装的包
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
命令显示一个或多个已安装包的信息。我们来看一个例子
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: [email protected] 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
和 pip uninstall
命令卸载包。
假设我们要从当前 Python 环境中删除 requests
库。我们可以通过以下方式完成
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 环境中使用它来安装特定版本的包。
在 pip 中搜索包
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(官方文档)