Skip to main content

识别未使用的依赖项并避免臃肿的虚拟环境。

项目描述

杂酚油

查看 测试

识别未使用的依赖项并避免臃肿的虚拟环境。

快速开始

在单独的虚拟环境中安装杂酚油(使用例如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.txtrequirements-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 查看哈希

已上传 source

内置分布

creosote-1.0.1-py3-none-any.whl (8.0 kB 查看哈希

已上传 py3