查找应该或不应该在项目需求中的包
pip_check_reqs的Python项目详细描述
它发生了:你开始在你的项目中使用一个模块,它工作了,你 不要意识到它只包含在你的virtualenv中,因为 这是您正在使用的包的依赖项。pip missing reqs找到那些 模块,以便您可以将它们包含在项目的requirements.txt中。
或者,您有一个长期运行的项目,其中包含一些包 不再在代码库中使用的Requirements.txt。这个 pip额外需求工具将找到这些模块,以便您可以删除它们。
假设您的项目遵循建议的布局sample project:
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 pip-extra-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中列出的任何内容,但不是 按样本导入。
样本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
从该检查中排除测试文件(或其他文件)
测试文件有时与 应用程序源(上述示例中的“示例”)。要求 这些测试通常不应该在requirements.txt文件中,并且 不希望这个工具为那些人生成错误的点击。
您可以使用--ignore-file
从检查中排除这些测试文件。
选项(简写为-f
)。允许选项的多个实例。
不包括支票中的模块
如果您的项目具有有条件导入的模块,或要求
如果是有条件包含的,则可以从
使用--ignore-module
(简写为-m
)按名称(或全局模式)检查:
# 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
感谢
josh hesketh——他重构了代码并贡献了pip额外需求工具。
wil cooley–他处理了normalize_name的删除并修复了一些错误。
发布历史记录
2.0.1
- 已处理从pip.utils中删除normalize\u名称的操作
- 处理没有文件的包
2.0将包重命名为pip检查请求
- 添加了工具pip extra req以查找已安装但未使用的包 (乔希·赫斯基撰稿)
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上的symlink疯狂
1.1.7
- 调整以调试输出
1.1.6
- 添加调试(非常详细)运行输出
1.1.5
- 将标题添加到输出,以便在较大的测试运行中更清楚地显示出来
- 修复测试和自检
1.1.4
- 添加–版本
- 从发布的代码lol中删除调试打印
1.1.3
- 程序生成用于测试 的退出代码
1.1.2
- 已更正PIP中提供的search_packages_info()的版本
- 处理相对导入
1.1.1
- 从未来进口的固定处理
- 自我测试并添加了own requirements.txt
- 清除了需要扫描文件或目录的用法(而不是 默认为“.”)
- pip 1.6dev提供的代码修复了搜索包中的bug 直到PIP 1.6被释放
1.1.0
- 实现–忽略模块