查找项目需求中应包含或不应包含的包
项目描述
pip-check-reqs
这种情况经常发生:您开始在项目中使用一个模块,它工作得很好,但您没有意识到它只是因为它是您正在使用的包的依赖项而被包含在您的virtualenv中。pip-missing-reqs可以找到这些模块,这样您就可以将它们包含在项目的requirements.txt文件中。
或者,您有一个长期运行的项目,其中requirements.txt中有一些包不再在代码库中积极使用。pip-extra-reqs工具可以找到这些模块,这样您就可以将它们删除。
假设您的项目遵循建议的示例项目布局
setup.py setup.cfg requirements.txt sample/__init__.py sample/sample.py sample/tests/test_sample.py
基本用法,在项目目录中运行
<activate virtualenv for your project> pip-missing-reqs --ignore-file=sample/tests/* sample
这将找到“sample”代码中的所有导入,并检查这些模块所属的包是否在requirements.txt文件中。
此外,还可以检查requirements.txt中没有在项目中使用的依赖项
<activate virtualenv for your project> pip-extra-reqs --ignore-file=sample/tests/* sample
这个功能会找到在requirements.txt中列出但未被sample导入的任何内容。
示例tox.ini配置
为了使您的生活更轻松,请将以下内容复制到您的tox.ini中
[testenv:pip-check-reqs] deps=-rrequirements.txt commands= pip-missing-reqs --ignore-file=sample/tests/* sample pip-extra-reqs --ignore-file=sample/tests/* sample
排除测试文件(或其他)的检查
您的测试文件有时会与应用程序源代码(如上述示例中的“sample”)位于同一目录中。这些测试的要求通常不应包含在requirements.txt文件中,您也不希望此工具为这些测试生成错误的匹配项。
您可以使用< cite>–ignore-file选项(缩写为< cite>-f)排除这些测试文件。此选项可以多次使用。
排除检查中的模块
如果您的项目有条件导入的模块或条件包含的要求,您可以使用< cite>–ignore-module(缩写为< cite>-m)通过名称(或glob模式)排除某些模块。
# ignore the module spam pip-missing-reqs --ignore-module=spam sample # ignore the whole package spam as well pip-missing-reqs --ignore-module=spam --ignore-module=spam.* sample
使用pyproject.toml而不是requirements.txt
如果您的项目使用< cite>pyproject.toml而不是< cite>requirements.txt,您可以使用像< cite>pdm这样的外部工具将其转换为< cite>requirements.txt。
# requires `pip install pdm` pdm export --pyproject > requirements.txt
然后您可以使用< cite>pip-missing-reqs和< cite>pip-extra-reqs像往常一样。
鸣谢
Josh Hesketh – 调整代码并贡献了pip-extra-reqs工具。
Wil Cooley – 处理了移除normalize_name和修复一些错误。
发布历史
2.5.2
性能改进。
添加了对Windows的初步支持。
2.5.1
修复了导入< cite>__main__的问题。
修复了导入包含点名称的包的问题。
2.5.0
支持Python 3.10。
移除对Python 3.8的支持。
将pip要求提升到23.2。
2.4.4
将packaging要求提升到>= 20.5。旧版本的< cite>pip-check-reqs可能因先前指定的版本要求而损坏。
2.4.3
在Python 3.11上改进了性能。
2.4.2
添加了对Python 3.11的支持。
将< cite>python_requires添加到元数据;从现在开始,< cite>pip-check-reqs的发布被标记为与Python 3.8.0及更高版本兼容。
将< cite>–version标志显示为解释器版本和pip-check-reqs运行的包的路径,类似于< cite>pip –version显示的信息。
< cite>-V现在是< cite>–version的别名。
2.3.2
修复了对pip < 21.3的支持。
2.3.1
修复了< cite>–skip-incompatible也会跳过其他要求的问题。
支持pip >= 21.3。
2.3.0
支持pip >= 21.2.1。
2.2.2
AST解析失败现在将报告带有正确解析帧文件名的回溯,而不是< cite><unknown>。
2.2.1
Python源现在始终使用utf-8读取,即使读取文件的默认编码设置不同。
2.2.0
向< cite>pip-extra-reqs添加了< cite>–skip-incompatible标志,该标志使它忽略与当前环境不兼容的带有环境标记的要求。
向< cite>pip-extra-reqs和< cite>pip-missing-reqs命令添加了< cite>–requirements-file标志。此标志使您能够指定要求文件的路径。以前,总是使用“requirements.txt”。
修复了某些日志在< cite>-d和< cite>-v标志下不可见的问题。
2.1.1
错误修复:虽然从源代码中删除了对Python 2的支持,但发布的wheel仍然是通用的。现在明确指出,发布的wheel不支持Python 2。请使用版本2.0.4来支持Python 2。
2.1.0
移除对Python 2的支持。如果您需要此支持,请使用此工具的旧版本。
移除对setuptools的要求。
支持pip的新版本,包括当前版本,以获得更多功能(20.1.1)。感谢@Czaki为此更改的重要部分。
2.0.1
处理从pip.utils中删除normalize_name的问题。
处理没有文件的包。
2.0 将包重命名为pip_check_reqs
添加工具pip-extra-reqs以查找已安装但未使用的包(由Josh Hesketh贡献)
1.2.1
降低要求到6.0+
1.2.0
将pip要求提升到6.0.8+
更新pip内部使用的版本
1.1.9
测试修复和清理
删除硬编码的simplejson调试行为
1.1.8
使用os.path.realpath避免在debian/ubuntu上出现符号链接的奇怪行为
1.1.7
调整调试输出
1.1.6
添加调试(非常详细)的运行输出
1.1.5
添加标题以使在较大测试运行时的输出更清晰
修复测试和自检
1.1.4
添加–version
从发布代码中移除调试打印
1.1.3
修复程序以生成对测试有用的退出代码
1.1.2
从pip更正了vendored的search_packages_info()版本
处理相对导入
1.1.1
修复了对__future__的导入处理
进行自测并添加了自己的requirements.txt
清理了使用,要求扫描文件或目录(而不是默认为“.”)
从pip 1.6dev版本中获取的vendored代码,修复了直到pip 1.6发布前的search_packages_info中的错误
1.1.0
实现了–ignore-module
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
pip_check_reqs-2.5.3.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0b7ef9dfd6efc691164d991c961047dbd74a8609e2eb3e33c09b58f85d6cfa09 |
|
MD5 | 69a0606a0f7652e649a98d63fb771311 |
|
BLAKE2b-256 | 468d0dea2eff162944c72fb8b779c970828c7dc304843b4a4ef9bde217eb16ef |
pip_check_reqs-2.5.3-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 692239e91fb1fa91052abd0db2887825d2c34593f99a6244eeadb188692a122b |
|
MD5 | 235940ffb2565a3281cdaf5d18f0be04 |
|
BLAKE2b-256 | 0756935014260012a97f470ebbe2be815ff653028c2efc3370051e33824d637f |