di/pip-api
GitHub: di/pip-api
一个非官方的可导入式 pip API,通过封装 pip 命令行调用,让开发者能安全地在 Python 代码中程序化地使用 pip 功能。
Stars: 119 | Forks: 18
[][#github-license]
[][#pypi-package]
[][#pypi-package]
[][#conda-forge-package]
[][#conda-forge-package]
[][#conda-forge-feedstock]
由于 [`pip`](https://pypi.org/p/pip) 是一个命令行工具,[它没有官方支持的、可导入的
API](https://pip.pypa.io/en/latest/user_guide/#using-pip-from-your-program)。
然而,这并不意味着人们没有尝试过 `import pip`,这通常会在 `pip` 的维护者
进行常规重构时让人感到非常头疼。
## 目标
本项目的目标是提供一个可导入的 `pip` API,该 API _完全符合_ 从程序中使用
`pip` 的推荐方法。
如何实现?通过提供一个封装了对 `pip` 命令行调用的可导入 API,该库可用作
现有 `pip` 内部 API 使用的直接替代品。
### 范围
这个目标意味着这里添加的任何新 API 都必须具有以下等价物:
- 某些内部 `pip` API(或内部 API 的组合)
- 某些 CLI 调用(或 CLI 调用的组合)
任何目前无法通过内部 `pip` API 或 CLI 调用实现的功能均不在此范围内。
## 安装
你可以使用 `pip` 或 `conda` 来安装 `pip-api`。
**使用 pip**:
```
python -m pip install pip-api
```
**使用 conda**:
```
conda install -c conda-forge pip-api
```
## 支持的命令
并非所有命令都支持所有版本的 `pip` 和所有平台。
如果你尝试使用的命令不兼容,`pip_api` 将抛出一个
`pip_api.exceptions.Incompatible` 异常供你的程序捕获。
### 适用于所有 `pip` 版本:
* `pip_api.version()`
* `pip_api.installed_distributions(local=False)`
* `pip_api.parse_requirements(filename, options=None, include_invalid=False, strict_hashes=False)`
* `pip_api.hash(filename, algorithm='sha256')`
* `pip_api.installed_distributions(local=False, paths=[])`
## 使用案例
该库被许多其他工具使用,包括:
* [`pip-audit`](https://pypi.org/project/pip-audit/),用于分析依赖项中的已知漏洞
* [`pytest-reqs`](https://pypi.org/project/pytest-reqs),用于比较需求文件与测试依赖项
* [`hashin`](https://pypi.org/project/hashin/),用于向需求文件添加哈希锁定
* ……以及更多。
标签:API封装, Conda, pip, PyPI, Python, 代码执行, 依赖管理, 包管理, 后端开发, 开发库, 数据管道, 无后门, 网络调试, 自动化, 虚拟环境, 软件工程, 进程调用, 逆向工具, 非官方库