识别未使用的依赖项并避免臃肿的虚拟环境。
项目描述
杂酚油
识别未使用的依赖项并避免臃肿的虚拟环境。
快速开始
在单独的虚拟环境中安装杂酚油(使用例如pipx):
pipx install creosote
扫描虚拟环境中未使用的包:
creosote --deps-file pyproject.toml --venv .venv --paths src
示例输出:
$ creosote
Parsing src/creosote/formatters.py
Parsing src/creosote/models.py
Parsing src/creosote/resolvers.py
Parsing src/creosote/__init__.py
Parsing src/creosote/parsers.py
Parsing src/creosote/cli.py
Parsing pyproject.toml for packages
Found packages in pyproject.toml: PyYAML, distlib, loguru, protobuf, toml
Resolving...
Unused packages found: PyYAML, protobuf
得到帮助:
creosote --help
这是如何工作的
需要一些数据作为输入:
- 软件包名称列表(从例如
pyproject.toml
,中获取requirements_*.txt|.in
) - 虚拟环境的路径
- 一个或多个 Python 文件的路径
creosote 工具将首先扫描给定的 python 文件以查找其所有导入。然后它获取所有包名称。最后,所有导入都与其对应的包名相关联。如果一个包没有任何关联的导入,它将被认为是未使用的。
野心与历史
像这样的软件包的想法源于获得有关生产依赖项(运送到生产环境)的安全漏洞报告,结果证明甚至没有使用。
目标是能够在 CI 中运行此工具,这将捕获开发人员忘记删除未使用的包的情况。这种情况的一个例子可能是在进行重构时。
这可以与 flake8 或 pylint 配合使用,它们可以在 CI 中警告未使用的导入。
注意: creosote 工具支持识别未使用的生产依赖项和开发人员依赖项。
常问问题
是否支持 requirements.txt 文件?
是的,有点。无法判断哪一部分requirements.txt
指定了生产与开发人员的依赖关系。因此,您必须将requirements.txt
文件分解为 egrequirements-prod.txt
并requirements-dev.txt
使用其中任何一个作为输入。
如果您使用的是pip-tools,您可以提供一个*.in
文件。
我可以扫描 pyproject 的开发依赖项吗?
是的!对于pyproject.toml
,只需提供--dev
论据。
我可以将其用作 GitHub 操作吗?
是的!有关工作示例,请参阅.github/workflows/action.yaml。
“杂酚油”这个名字是怎么回事?
这个库的名字来源于关于 Mr. Creosote 的 Monty Python 场景。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
creosote-1.0.1.tar.gz
(7.1 kB
查看哈希)
内置分布
creosote-1.0.1-py3-none-any.whl
(8.0 kB
查看哈希)