2 个版本
0.1.1 | 2024年4月11日 |
---|---|
0.1.0 | 2024年4月10日 |
#744 在 命令行工具
26 每月下载
490KB
1.5K SLoC
Unpack
从您的项目和其他地方解压 Python 包。
Unpack 有几个目标
- 轻松导航和删除已使用、未使用和未跟踪的 Python 包。
- 快速识别上述类别中包的磁盘使用情况。
- 查看各种包及其依赖关系之间的关系。
为了实现这些目标,Unpack
- 通过遍历 抽象语法树 收集所有项目导入。
- 从 依赖规范文件 收集所有声明的依赖项。
- 将本地环境中的 site-packages 映射到解决依赖关系和它们公开的导入。
- 识别本地 site-package 依赖项,以避免意外删除其他包正在使用的依赖项。
- 计算包的大小和总磁盘使用量。
包状态
-
-used
表示包已在本地上安装,其中之一别名在项目中积极使用,并在pyproject.toml
或requirements.txt
中声明了相应的依赖项。此状态表示完全集成和管理良好的包。 -
-unused
表示包已在本地上安装,并在pyproject.toml
或requirements.txt
中声明了相应的依赖项,但在项目中未积极使用。 注意: 此包不得是任何积极-used
包的依赖项,才能被视为未使用。 -
-untracked
表示包已安装,其中之一别名在项目中积极使用,但未在pyproject.toml
或requirements.txt
中声明。这突出了那些隐式使用但未正式声明的包,可能导致依赖关系管理和部署中的不一致或问题。
用法
❯ un-pack
📦 Unused Packages
package | version | size
--------------+--------------+----------
scikit-learn | ^1.4.1.post1 | 33.2 MiB
pydantic | ^1.9.0 | 7.2 MiB
keras | ^3.0.5 | 3.9 MiB
💽 Total disk space: 44.3 MiB
Note: There might be false-positives.
For example, Unpack cannot detect usage of packages that are not imported under `[tool.poetry.*]`.
Similarly, it can only detect declared packages in requirements.txt or pyproject.toml.
安装
在 macOS 上
您可以使用 Homebrew 安装 unpack
brew tap bnkc/tap
brew install unpack
… 或者使用 MacPorts
sudo port install [COMING SOON]
在 crates.io 上
cargo install un-pack --locked
或者,您可以使用以下方法直接从仓库安装 unpack
git clone https://github.com/bnkc/unpack
cargo install --path ./unpack
[!警告] 在某些情况下,使用
Unpack
可能会产生误报。将site-packages
映射到相应的依赖/导入并不总是 1:1 的关系。例如:scikit-learn
被导入为sklearn
。许多决策都是基于 Python 软件包元数据 做出的。
命令行选项
这是 un-pack -h
的输出。要查看完整的命令行选项,请使用 un-pack --help
,它还包括更详细的帮助文本。
Usage: un-pack [OPTIONS]
Options:
-b, --base-directory <BASE_DIRECTORY>
The path to the directory to search for Python files. [default: .]
-s, --package-status <STATUS>
Select the packages status to search for [default: unused] [possible values: used,
unused, untracked]
-i, --ignore-hidden
Ignore hidden files and directories.
-d, --max-depth <DEPTH>
Set maximum search depth (default: none)
-o, --output <OUTPUT>
The output format to use allows for the selection of the output format for the results
of the unused packages search. The default output format is `human`. The `json` format
is also available [default: human] [possible values: human, json]
-t, --dep-type <DEP_TYPE>
Select the depencency specification file of choice if more than one exists. By default,
`pyproject.toml` is selected [default: poetry] [possible values: pip, poetry]
-h, --help
Print help (see more with '--help')
-V, --version
Print version
谢谢
Unpack 是一项充满爱心的劳动。有很多可以改进的地方,但如果您觉得这个项目很有用,请给我发消息!
如果您想为 Unpack 做出贡献,请打开一个问题/PR ❤️
依赖项
~20–34MB
~510K SLoC