Python pip

什么是 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)。

此包所需的所有其他依赖项(如 chardeturllib3certifi)也由 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 卸载包

我们可以使用 pippip 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 库的依赖项(chardeturllib3certifi)不会被卸载。

如果我们需要同时删除包的依赖项,我们可以使用 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(官方文档)

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战