目录
前言
提示:这里可以添加本文要记录的大概内容:
官方文档介绍了依赖项解析:“pip 能够确定和安装包的依赖关系。确定要安装哪个版本的依赖项的过程称为依赖项解析(dependency resolution)。可以通过传递 --no-deps
给 pip install
来禁用此行为。”
若不禁用,则 py -m pip install <pkg>
将会安装指定的 pkg 及其依赖的其他包,非常简便。
本文是对 pip 命令行处理项目依赖关系的记录。
提示:以下是本篇文章正文内容,下面案例可供参考
1 依赖关系
1.1. 验证安装的软件包是否具有兼容的依赖关系
1.2. 查看本地已安装的包(非自带)
pip freeze
会输出所有在本地已安装的包(但不包括 pip、wheel、setuptools 等自带包)- 若需要输出内容与 pip list 一致,需使用
pip freeze -all
。
1.3. 获取项目依赖包的安装列表
为了代码稳定迁移,需要获取当前项目依赖包的安装列表,包括需要安装的包及其版本。这便是:requirements.txt。
- 输出列表至 requirements.txt:
pip freeze > requirements.txt
。这里使用了输入输出重定向。 - 可根据需要编辑 requirements.txt:删除任何不必要或过时的需求,可以显著降低依赖关系树的复杂性,从而减少安装包之间版本冲突的机率。
- 一定要配合 Python 虚拟环境 virtualenv 使用。有项目的,替换一下。
1.4. 根据列表安装所有包
- 一次性安装 requirements.txt 中的所有包(指定版本):
pip install -r requirements.txt
- 可参考该命令行:
pip download -d packages -r requirements.txt
,不过我还没有试过。
2 pip freeze 的 options
2.1. 学习手册
2.2. options 列举
如下内容转自 简易学习,简单整理,并依官方手册略微修改。
-
-r, --requirement <file>
生成输出时,使用给定需求文件中的顺序及其注释
该选项可重复多次添加
我将其用于pip install
。 -
-f, --find-links <url>
用于查找包的网址,会添加到输出结果中 -
-l, --local
只列出在虚拟环境中安装的包,也就是不列出全局安装的包。
如果在具有全局访问权限的 virtualenv 中,请不要输出全局安装的包。 -
--user
一般只在虚拟环境中使用 --user
只输出用户级别的已安装的包 -
--all
在输出结果中包含以下几个包 wheel, pip, distribute, setuptools -
--path <path>
指定安装路径(可多次使用)。 -
--exclude-editable
从输出结果中排除可编辑的包 -
--exclude <package>
从输出中排除指定的包
总结
py -m pip install <pkg>
将会安装指定的 pkg 及其依赖的其他包。
pip freeze
生成一个 requirements.txt 文件,并用pip install
在另一环境中从 requirements.txt 安装。- 更好的处理方式请期待升级处理。