Python 基础教程

Python 流程控制

Python 函数

Python 数据类型

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

Python pip

在本教程中,我们将学习如何使用pip来安装和管理Python软件包。

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

在这里,我们可以看到install命令已与pip一起使用,后跟我们要安装的软件包的名称(requests)。

pip还安装了此软件包所需的所有其他依赖项,例如chardet,urllib3和certifi。

指定软件包版本

如果以最小形式使用pip install,则pip将下载软件包的最新版本。

有时,只有特定版本与其他程序兼容。因此,我们可以通过以下方式定义软件包的版本:

pip install requests==2.21.0

在这里,我们已经安装requests库的2.21.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: 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库的信息。注意上面输出中的RequiresRequired-by列。

Requires列显示requests库需要哪些依赖项。 并且,Required-by列显示了需要requests的软件包。

用pip卸载软件包

我们可以通过卸载包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(官方文档)