Python依赖管理:下载源切换与依赖下载指南
简介
任何编程语言都有依赖仓库,而 Python 的官方依赖仓库就是 PyPI (Python Package Index)。Python 也提供了官方的工具 pip(package installer for Python)来安装依赖。
安装
pip 工具已经集成在了 Python 官方安装包中,无需额外安装。但如果特殊环境不存在这个工具,可以通过脚本下载。
下载 get-pip.py 脚本。
使用 Python 运行脚本安装。
python get-pip.py
升级
如果 pip 版本有更新需要升级,可以用升级命令更新自己。
python -m pip install --upgrade pip
使用
使用当前 Python 解释器的 pip 工具。由于 pip 本身也是 Python 的一个模块,因此可以使用 -m
参数运行。
python -m pip <pip arguments>
如果只有一个 Python 解释器,可以将 Python 的 bin 加入 Path(使用官方安装包可自动添加),这样就可以直接使用 pip 命令了。
pip --version
安装依赖
使用 install 子命令安装依赖。pip 会根据软件包信息自动安装依赖树(从仓库安装)。
# 安装最新版本
pip install SomePackage
# 安装指定版本
pip install SomePackage==1.0.4
# 安装最低版本
pip install 'SomePackage>=1.0.4'
# 安装依赖的扩展
pip install 'SomePackage[PDF]'
# 安装本地文件
pip install './downloads/SomePackage-1.0.4.tar.gz'
# 安装本地 wheel 包
pip install SomePackage-1.0-py2.py3-none-any.whl
# 安装指定的来源依赖
pip install 'SomeProject@http://my.package.repo/1.2.3.tar.gz'
更新依赖
install
子命令有个 --upgrade
参数用来更新依赖。
pip install --upgrade SomePackage
根据需求清单安装
如果有许多依赖需要安装,可以编写需求清单文件,并使用 -r
参数来安装。
pip install -r requirements.txt
需求清单文件是一个纯文本文件,一般建议使用名称 requirements.txt
。
它的格式有如下几种(# 开头的行为注释):
# 直接写依赖名称,会安装最新版本
pytest
pytest-cov
beautifulsoup4
# 指定特定的版本
docopt == 0.6.1
pkg3>=1.0,<=2.0
requests [security] >= 2.8.1, == 2.8.* ; python_version < "2.7"
# 引用其他需求清单
-r other-requirements.txt
# 指定一个本地依赖
./downloads/numpy-1.9.2-cp34-none-win32.whl
约束文件
使用 -c
参数可以指定约束文件,约束文件只用于指定依赖的版本,并不安装它们。约束文件可以与需求清单文件相结合,指定需要安装依赖的版本。它的格式和需求清单文件一样。
pip install -c constraints.txt
卸载依赖
使用 uninstall
子命令卸载依赖。
pip uninstall SomePackage
获取已安装的包
使用 list
子命令获取已安装的包列表。
pip list
使用 --outdated
参数获取已过时的包,并查看最新版本。
pip list --outdated
docutils (Current: 0.9.1 Latest: 0.10)
Sphinx (Current: 1.1.2 Latest: 1.1.3)
查看已安装包的详情
使用 show
命令查看已安装的包的详情。
pip show sphinx
搜索包
使用 search
从依赖仓库搜索依赖。
pip search "query"
源管理
官方源包含了最新的依赖包,但是由于在国外,网速往往很慢。我们可以更换为国内的镜像源(一般按天同步),可极大地提升下载速度。
命令行修改
install
子命令有个 -i
参数用于指定依赖源。
pip install -i https://mirrors.aliyun.com/pypi/simple sphinx
配置文件修改
如果需要一劳永逸,可以创建一个配置文件,这样就不用每次在命令中输入了。配置文件的名称为 pip.conf
或 pip.ini
。
Python 有三个层级的配置文件,分别是系统级、用户级和环境级。它们分别在如下位置:
Linux | Mac | Windows | |
---|---|---|---|
系统级 | /etc/pip.conf | /Library/Application Support/pip/pip.conf | Win7 之后 C:\ProgramData\pip\pip.ini |
用户级 | $HOME/.config/pip/pip.conf,为保持兼容性,之前的配置文件 $HOME/.pip/pip.conf 也会被载入 | 优先载入 $HOME/Library/Application Support/pip/pip.conf,然后是 $HOME/.config/pip/pip.conf,为保持兼容性,之前的配置文件 $HOME/.pip/pip.conf 也会被载入 | %APPDATA%\pip\pip.ini,为保持兼容性,之前的配置文件 %HOME%\pip\pip.ini 也会被载入 |
环境级 | $VIRTUAL_ENV/pip.conf | $VIRTUAL_ENV/pip.conf | %VIRTUAL_ENV%\pip.ini |
新配置文件会覆盖旧的配置文件中的值。
另外,还可以使用 PIP_CONFIG_FILE
环境变量来指定配置文件的路径。
配置文件的优先级从低到高为:系统级 < 用户级 < 环境级 < PIP_CONFIG_FILE 环境变量,高优先级可覆盖低优先级中的配置。
文件中使用 index-url 指定源。
[global]
index-url = https://mirrors.aliyun.com/pypi/simple
指定环境变量
另一种方式是指定环境变量 PIP_INDEX_URL,这样 pip 运行时会尝试获取这个环境变量的值,如有则作为默认源。
PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple pip install requests
常用的国内源
作者:火眼9988