安装 Python 模块

电子邮件:

distutils-sig@python.org

作为一个广受欢迎的开源开发项目,Python 拥有一个活跃的、由贡献者和用户组成的支持社区,他们也以开源许可协议,将其软件提供给其他 Python 开发者使用。

这使得 Python 用户可以有效地分享与协作,从他人为常见(有时甚至是罕见!)问题创建的解决方案中受益,并可能将自己的解决方案贡献到公共资源库中。

本指南涵盖了安装过程。有关创建和分享你自己的 Python 项目的指南,请参阅 Python 打包用户指南

备注

对于企业和其他机构用户,请注意,许多组织对于使用和贡献开源软件有自己的政策。在使用 Python 提供的分发和安装工具时,请考虑这些政策。

关键术语

  • pip 是首选的安装程序。从 Python 3.4 开始,它被默认包含在 Python 的二进制安装程序中。

  • 虚拟环境 是一个半隔离的 Python 环境,它允许为特定应用程序安装包,而不是在系统范围内安装。

  • venv 是创建虚拟环境的标准工具,自 Python 3.3 起成为 Python 的一部分。从 Python 3.4 开始,它默认在所有创建的虚拟环境中安装 pip

  • virtualenvvenv 的一个第三方替代品(也是其前身)。它允许在 Python 3.4 之前的版本中使用虚拟环境,这些版本要么根本不提供 venv,要么无法在创建的环境中自动安装 pip

  • Python 包索引(Python Package Index)是一个公共的开源许可软件包仓库,供其他 Python 用户使用。

  • Python 打包管理局(Python Packaging Authority)是由开发者和文档作者组成的团体,负责维护和发展标准的打包工具以及相关的元数据和文件格式标准。他们在 GitHub 上维护着各种工具、文档和问题跟踪器。

  • distutils 是最初的构建和分发系统,于 1998 年首次被添加到 Python 标准库中。虽然直接使用 distutils 的方式正逐渐被淘汰,但它仍然为当前的打包和分发基础设施奠定了基础,并且它不仅仍然是标准库的一部分,其名称也以其他方式延续(例如用于协调 Python 打包标准开发的邮件列表名称)。

在 3.5 版更改: 现在推荐使用 venv 来创建虚拟环境。

基本用法

标准的打包工具都被设计为在命令行中使用。

以下命令将从 Python 包索引(Python Package Index)安装一个模块的最新版本及其依赖项

python -m pip install SomePackage

备注

对于 POSIX 用户(包括 macOS 和 Linux 用户),本指南中的示例假定你正在使用 虚拟环境

对于 Windows 用户,本指南中的示例假定你在安装 Python 时选择了调整系统 PATH 环境变量的选项。

也可以直接在命令行中指定一个确切的版本或最低版本。当使用比较运算符(如 ><)或某些其他会被 shell 解释的特殊字符时,包名和版本号应放在双引号内

python -m pip install SomePackage==1.0.4    # specific version
python -m pip install "SomePackage>=1.0.4"  # minimum version

通常情况下,如果一个合适的模块已经安装,再次尝试安装它不会有任何效果。升级现有模块必须显式地请求

python -m pip install --upgrade SomePackage

关于 pip 及其功能的更多信息和资源,可以在 Python 打包用户指南 中找到。

虚拟环境的创建是通过 venv 模块完成的。将包安装到激活的虚拟环境中使用的是上面展示的命令。

我该如何……?

以下是一些常见任务的快速解答或链接。

… 在 Python 3.4 之前的版本中安装 pip

Python 从 3.4 版本开始才捆绑 pip。对于更早的版本,pip 需要像 Python 打包用户指南中所述的那样进行“引导安装”。

… 仅为当前用户安装包?

python -m pip install 传递 --user 选项,将只为当前用户安装包,而不是为系统的所有用户安装。

… 安装科学计算相关的 Python 包?

许多科学计算相关的 Python 包有复杂的二进制依赖,目前不易直接使用 pip 安装。目前来说,用户通过其他方式安装这些包,通常会比尝试用 pip 安装更容易。

… 同时使用多个版本的 Python?

在 Linux、macOS 和其他 POSIX 系统上,使用带版本号的 Python 命令结合 -m 开关来运行相应版本的 pip

python2   -m pip install SomePackage  # default Python 2
python2.7 -m pip install SomePackage  # specifically Python 2.7
python3   -m pip install SomePackage  # default Python 3
python3.4 -m pip install SomePackage  # specifically Python 3.4

也可能存在带相应版本号的 pip 命令。

在 Windows 上,使用 py Python 启动器结合 -m 开关

py -2   -m pip install SomePackage  # default Python 2
py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3   -m pip install SomePackage  # default Python 3
py -3.4 -m pip install SomePackage  # specifically Python 3.4

常见安装问题

在 Linux 上安装到系统 Python 中

在 Linux 系统上,Python 安装通常会作为发行版的一部分被包含。安装到这个 Python 环境中需要系统的 root 权限,并且如果某个组件被 pip 意外升级,可能会干扰系统包管理器和系统其他组件的运行。

在这类系统上,当使用 pip 安装包时,通常最好使用虚拟环境或按用户安装。

未安装 Pip

有可能 pip 默认没有被安装。一个可能的修复方法是

python -m ensurepip --default-pip

还有一些关于安装 pip 的额外资源。

安装二进制扩展

Python 通常严重依赖于基于源代码的分发,期望最终用户在安装过程中从源代码编译扩展模块。

随着对二进制 wheel 格式的支持被引入,以及通过 Python 包索引发布至少适用于 Windows 和 macOS 的 wheel 的能力,这个问题预计会随着时间的推移而减少,因为用户将能更经常地安装预编译的扩展,而不需要自己构建它们。

一些用于安装科学计算软件的解决方案,如果它们尚未以预编译的 wheel 文件形式提供,也可能有助于获取其他二进制扩展而无需在本地构建它们。