安装 Python 模块
****************

作为一个热门的开源开发项目，Python 拥有活跃的贡献者和用户支持社区并让
他们的软件可供其他 Python 开发者在开源许可条款下使用。

这允许 Python 用户有效地共享和协作，从其他人已经为常见（有时甚至是罕见
的）问题所创建的解决方案中获益，以及可以将他们自己的解决方案贡献到公共
资源库中。

本指南涵盖了该流程中安装的部分。有关创建和共享自己的 Python 项目的指导
，请参阅 Python packaging user guide。

备注:

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


关键术语
========

* **pip** 是首选的安装程序。 它默认包括在 Python 二进制安装程序中。

* *虚拟环境* 是一种半隔离的 Python 环境，允许为特定的应用安装各自的包
  ，而不是安装到整个系统。

* "venv" 是用于创建虚拟环境的标准工具。 它默认会将 **pip** 安装至所创
  建的每个虚拟环境中。

* "virtualenv" 是 "venv" 的一个第三方替代物（及其前身）。

* Python Package Index (PyPI) 是一个供所有 Python 用户使用的开源许可的
  公共软件包仓库。

* Python Packaging Authority 负责标准打包工具以及相关元数据和文件格式
  标准维护与改进的开发人员和文档作者团队。他们在 GitHub 上维护着各种工
  具、文档和问题追踪系统。

在 3.5 版本发生变更: 现在推荐使用 "venv" 来创建虚拟环境。

参见: Python 软件包用户指南：创建和使用虚拟环境


基本使用
========

标准打包工具完全是针对命令行使用方式来设计的。

以下命令将从 PyPI 安装最新版本的模块及其依赖项:

   python -m pip install SomePackage

备注:

  对于 POSIX 用户（包括 macOS 和 Linux 用户），本指南中的示例假定使用
  了 *virtual environment*。对于 Windows 用户，本指南中的示例假定在安
  装 Python 时选择了修改系统 PATH 环境变量。

在命令行中指定一个准确或最小版本也是可以的。当使用比较运算符例如 ">",
"<" 或其他某些可以被终端所解析的特殊字符时，包名称与版本号应当用双引号
括起来:

   python -m pip install SomePackage==1.0.4    # 特定版本
   python -m pip install "SomePackage>=1.0.4"  # 最小版本

通常，如果一个匹配的模块已安装，尝试再次安装将不会有任何效果。要升级现
有模块必须显式地发出请求:

   python -m pip install --upgrade SomePackage

更多有关 **pip** 及其功能的信息和资源可以在 Python 软件包用户指南 中找
到。

虚拟环境的创建可使用 "venv" 模块来完成。向已激活虚拟环境安装软件包可使
用上文所介绍的命令。

参见: Python 软件包用户指南：安装 Python 分发包


我应如何 ...？
==============

这是一些常见任务的快速解答或相关链接。


... 只为当前用户安装软件包？
----------------------------

将 "--user" 选项传入 "python -m pip install" 将只为当前用户而非为系统
中的所有用户安装软件包。


... 安装科学计算类 Python 软件包？
----------------------------------

许多科学计算类 Python 软件包都有复杂的二进制依赖项，目前直接使用
**pip** 安装并不容易。 用户通过 其他方式 安装这些软件包通常会比尝试使
用 **pip** 安装更加容易。

参见: Python 软件包用户指南：安装科学计算类软件包


... 使用并行安装的多个 Python 版本？
------------------------------------

在 Linux、macOS 以及其他 POSIX 系统上，使用带版本号的 Python 命令结合
"-m" 开关来运行对应版本的 **pip**:

   python3    -m pip install SomePackage  # 默认 Python 3
   python3.14 -m pip install SomePackage  # 指定 Python 3.14

也可以使用对应适当版本的 **pip** 命令。

在 Windows 上，可使用 **py** Python 启动器配合 "-m" 开关:

   py -3    -m pip install SomePackage  # 默认的 Python 3
   py -3.14 -m pip install SomePackage  # Python 3.14 专属


常见的安装问题
==============


在 Linux 的系统 Python 版本上安装
---------------------------------

在 Linux 系统上，通常会包括某个 Python 版本作为发行版的组成部分。 将软
件包安装到这个 Python 版本中需要有系统 root 权限，并可能会干扰到系统软
件包管理器和其他系统组件的运作，如果在使用 **pip** 时意外升级了某个组
件的话。

在这样的系统上，在通过 **pip** 安装软件包时使用虚拟环境或分用户安装是
更好的做法。


未安装 pip
----------

在默认情况下 **pip** 有可能未被安装。 一个可能的解决办法是:

   python -m ensurepip --default-pip

还有关于 安装 pip 的其他资源。


安装二进制编译扩展
------------------

Python 曾严重依赖基于源码的分发方式，最终用户需要在安装过程中从源码编
译扩展模块。

随着二进制 wheel 格式的引入以及通过 PyPI 发布 wheel 的能力，这个问题正
在逐渐减弱，因为用户能够更经常地安装预编译的扩展，而无需自己构建它们。

某些用于安装尚未作为预构建 wheel 文件提供的 科学计算软件 的解决方案，
也有助于在无需本地构建的情况下获取其他二进制扩展。

参见: Python 软件包用户指南：二进制码扩展
