作为一个流行的开源开发项目,Python拥有一个由贡献者和用户组成的活跃支持社区,他们还根据开源许可条款向其他Python开发人员提供他们的软件。
这允许Python用户有效地共享和协作,从其他人已经创建的常见(有时甚至是罕见的!)问题的解决方案中受益,以及潜在地向公共池贡献他们自己的解决方案。
本指南涵盖了该过程的安装部分。有关创建和共享您自己的Python项目的指南,请参阅发行版指南。
对于企业和其他机构用户,请注意,许多组织在使用和贡献开源软件方面都有自己的政策。在使用Python提供的发行版和安装工具时,请考虑这些策略。
1、关键术语
pip
是首选的安装程序。从Python 3.4开始,它默认包含在Python二进制安装程序中。- 虚拟环境(
virtual environment
)是一种半隔离的Python环境,它允许安装包供特定应用程序使用,而不是在系统范围内安装。 venv
是创建虚拟环境的标准工具,自Python 3.3以来一直是Python的一部分。从Python 3.4开始,默认将pip
安装到所有创建的虚拟环境中。virtualenv
是venv
的第三方替代品(也是前身)。它允许在3.4之前的Python版本上使用虚拟环境,这些版本要么根本不提供venv
,要么无法自动将pip
装到创建的环境中。- Python包索引是开放源码许可包的公共存储库,可供其他Python用户使用。
- Python Packaging Authority是一个由开发人员和文档作者组成的组织,负责维护和发展标准打包工具以及相关的元数据和文件格式标准。他们在GitHub和Bitbucket上维护各种工具、文档和问题跟踪器。
distutils
是1998年首次添加到Python标准库中的原始构建和分发系统。虽然直接使用distutils正在逐步被淘汰,但它仍然为当前的打包和分发基础设施奠定了基础,它不仅仍然是标准库的一部分,而且它的名字以其他方式存在(例如用于协调Python打包标准开发的邮件列表的名称)。
在3.5版更改:现在建议使用venv
创建虚拟环境。
Python Packaging User Guide: Creating and using virtual environments
2、基本用法
标准打包工具都被设计为可以从命令行使用。
下面的命令将从Python包索引中安装模块的最新版本及其依赖项:
python -m pip install SomePackage
对于POSIX用户(包括macOS和Linux用户),本指南中的示例假设使用虚拟环境。
对于Windows用户,本指南中的示例假设在安装Python时选择了调整系统PATH环境变量的选项。
也可以直接在命令行上指定精确或最小版本。当使用比较符操作符,如>
、<
或其他特殊字符时,包名和版本应该用双引号括起来:
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 Packaging User Guide: Installing Python Distribution Packages
3、如何做
这些是一些常见任务的快速答案或链接。
在Python 3.4之前的Python版本中安装pip
?
Python在Python 3.4中才开始捆绑pip
。对于早期版本,pip
需要像Python打包用户指南中描述的那样被“引导”。
Python Packaging User Guide: Requirements for Installing Packages
仅为当前用户安装软件包?
将--user
选项传递给python -m pip install
将只为当前用户安装包,而不是为系统的所有用户安装包。
安装科学Python包?
许多科学Python包具有复杂的二进制依赖关系,并且目前不容易直接使用pip
进行安装。此时,对于用户来说,通过其他方式安装这些包通常比尝试使用pip安装它们更容易。
Python Packaging User Guide: Installing Scientific Packages
并行安装多个版本的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上,结合-m
开关使用py
Python启动器:
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
4、常见安装问题
4.1 在Linux上安装系统Python
在Linux系统上,Python安装通常会作为发行版的一部分包含。安装到这个Python安装需要对系统具有root访问权限,如果使用pip
意外升级组件,可能会干扰系统包管理器和系统其他组件的操作。
在这样的系统上,使用pip
安装包时,最好使用虚拟环境或为每个用户安装一个。
4.2 pip未安装
默认情况下可能不会安装pip。一个可能的解决办法是:
python -m ensurepip --default-pip
还有用于安装pip的其他资源。
4.3 安装二进制扩展
Python通常严重依赖于基于源代码的发行版,最终用户被期望从源代码编译扩展模块作为安装过程的一部分。
随着对二进制wheel
格式的支持的引入,以及通过Python包索引至少在Windows和macOS上发布wheel
的能力,这个问题有望随着时间的推移而减少,因为用户更经常地能够安装预构建的扩展,而不是需要自己构建它们。
一些用于安装尚未作为预构建的wheel
文件提供的科学软件的解决方案也可以帮助您获得其他二进制扩展,而无需在本地构建它们。