使用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
或者类似的。
激活虚拟环境¶
在虚拟环境中开始安装或使用包之前,需要 激活 它。激活虚拟环境将使虚拟环境特定 python
和 pip
可执行文件到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应用程序中导入和使用包。
安装程序包¶
现在您已经进入了虚拟环境,可以安装软件包了。让我们安装优秀的 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
从源安装¶
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不需要单独安装软件包,而是允许您在 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 它可以重新创建环境中安装的所有软件包的确切版本。