使用PIP和虚拟环境安装包

本指南讨论如何使用 pip 以及一个虚拟环境管理器: venv 对于python 3或 virtualenv 对于python 2。这些是用于管理Python包的最低级别的工具,如果更高级别的工具不适合您的需要,建议使用这些工具。

注解

此文档使用术语 包裹Distribution Package 它不同于 Import Package 用于在Python源代码中导入模块的。

安装PIP

pip 是引用python包管理器。它用于安装和更新软件包。您需要确保安装了最新版本的PIP。

Windows

用于Windows的python安装程序包括pip。您应该能够通过以下方式访问PIP:

py -m pip --version
pip 9.0.1 from c:\python36\lib\site-packages (Python 3.6.1)

您可以通过运行以下命令来确保PIP是最新的:

py -m pip install --upgrade pip

Linux和MacOS

Debian和大多数其他分配包括 python-pip 包,如果要使用Linux发行版提供的PIP版本,请参见 使用Linux包管理器安装pip/setuptools/wheel .

您也可以自己安装PIP,以确保您拥有最新版本。建议使用系统PIP引导用户安装PIP:

python3 -m pip install --user --upgrade pip

之后,您应该在用户站点中安装最新的PIP:

python3 -m pip --version
pip 9.0.1 from $HOME/.local/lib/python3.6/site-packages (python 3.6)

安装virtualenv

注解

如果您使用的是python 3.3或更高版本, venv 模块是创建和管理虚拟环境的首选方法。venv包含在python标准库中,不需要额外安装。如果您使用的是Venv,则可以跳过此部分。

virtualenv 用于管理不同项目的python包。使用virtualenv可以避免在全局安装python包,这可能会破坏系统工具或其他项目。您可以使用pip安装virtualenv。

在MacOS和Linux上:

python3 -m pip install --user virtualenv

在Windows上:

py -m pip install --user virtualenv

创建虚拟环境

venv (针对python 3)和 virtualenv (对于python 2)允许您为不同的项目管理单独的包安装。它们基本上允许您创建一个“虚拟”独立的python安装,并将包安装到该虚拟安装中。当您切换项目时,您可以简单地创建一个新的虚拟环境,而不必担心破坏其他环境中安装的包。在开发Python应用程序时,始终建议使用虚拟环境。

要创建虚拟环境,请转到项目的目录并运行venv。如果使用的是python 2,请替换 venv 具有 virtualenv 在下面的命令中。

在MacOS和Linux上:

python3 -m venv env

在Windows上:

py -m venv env

第二个参数是创建虚拟环境的位置。一般来说,您可以在项目中创建它并将其命名为 env .

Venv将在 env 文件夹。

注解

您应该从版本控制系统中排除虚拟环境目录,使用 .gitignore 或者类似的。

激活虚拟环境

在虚拟环境中开始安装或使用包之前,需要 激活 它。激活虚拟环境将使虚拟环境特定 pythonpip 可执行文件到shell的 PATH .

在MacOS和Linux上:

source env/bin/activate

在Windows上::

.\env\Scripts\activate

您可以通过检查python解释器的位置来确认您在虚拟环境中,它应该指向 env 目录。

在MacOS和Linux上:

which python
.../env/bin/python

在Windows上:

where python
.../env/bin/python.exe

只要您的虚拟环境被激活,PIP就会将包安装到特定的环境中,并且您可以在您的Python应用程序中导入和使用包。

离开虚拟环境

如果要切换项目或离开虚拟环境,只需运行:

deactivate

如果您想重新进入虚拟环境,只需遵循上面关于激活虚拟环境的相同说明。不需要重新创建虚拟环境。

安装程序包

现在您已经进入了虚拟环境,可以安装软件包了。让我们安装优秀的 Requests 类库 Python Package Index (PyPI)

pip install requests

PIP应该下载请求及其所有依赖项并安装它们:

Collecting requests
  Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests)
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests)
  Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
  Using cached idna-2.6-py2.py3-none-any.whl
Installing collected packages: chardet, urllib3, certifi, idna, requests
Successfully installed certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22

安装特定版本

PIP允许您使用 version specifiers . 例如,要安装特定版本的 requests

pip install requests==2.18.4

安装最新版本 2.x 请求发布:

pip install requests>=2.0.0,<3.0.0

要安装软件包的预发布版本,请使用 --pre 旗帜:

pip install --pre requests

安装附加程序

有些包有可选的 extras . 您可以通过在括号中指定额外的内容来告诉PIP安装这些组件:

pip install requests[security]

从源安装

PIP可以直接从源代码安装包,例如:

cd google-auth
pip install .

此外,PIP可以从源安装软件包 development mode ,这意味着对源目录的更改将立即影响已安装的包,而无需重新安装:

pip install --editable .

从版本控制系统安装

PIP可以直接从版本控制系统安装软件包。例如,可以直接从Git存储库安装:

git+https://github.com/GoogleCloudPlatform/google-auth-library-python.git#egg=google-auth

有关支持的版本控制系统和语法的详细信息,请参阅pip的文档 VCS Support .

从本地存档安装

如果您有 Distribution Package 的存档文件(zip、wheel或tar文件)可以直接使用pip安装:

pip install requests-2.18.4.tar.gz

如果您有一个包含多个包的存档的目录,您可以告诉PIP在那里查找包,而不使用 Python Package Index (PyPI) 完全:

pip install --no-index --find-links=/local/dir/ requests

如果要在连接受限的系统上安装软件包,或者要严格控制分发软件包的来源,则此功能非常有用。

使用其他包索引

如果要从与 Python Package Index (PyPI) ,您可以使用 --index-url 旗帜:

pip install --index-url http://index.example.com/simple/ SomeProject

如果您希望允许来自 Python Package Index (PyPI) 以及一个单独的索引,您可以使用 --extra-index-url 改为标记:

pip install --extra-index-url http://index.example.com/simple/ SomeProject

正在升级包

PIP可以使用 --upgrade 旗帜。例如,安装最新版本的 requests 以及它的所有依赖项:

pip install --upgrade requests

使用需求文件

PIP不需要单独安装软件包,而是允许您在 Requirements File . 例如,您可以创建一个 requirements.txt 文件包含:

requests==2.18.4
google-auth==1.1.0

并告诉pip使用 -r 旗帜:

pip install -r requirements.txt

冻结依赖项

PIP可以使用 freeze 命令:

pip freeze

它将输出包说明符列表,例如:

cachetools==2.0.1
certifi==2017.7.27.1
chardet==3.0.4
google-auth==1.1.1
idna==2.6
pyasn1==0.3.6
pyasn1-modules==0.1.4
requests==2.18.4
rsa==3.4.2
six==1.11.0
urllib3==1.22

这对于创建 Requirements Files 它可以重新创建环境中安装的所有软件包的确切版本。