di/pip-api

GitHub: di/pip-api

一个非官方的可导入式 pip API,通过封装 pip 命令行调用,让开发者能安全地在 Python 代码中程序化地使用 pip 功能。

Stars: 119 | Forks: 18

[![GitHub - 许可证](https://img.shields.io/github/license/di/pip-api?logo=github&style=flat&color=green)][#github-license] [![PyPI - Python 版本](https://img.shields.io/pypi/pyversions/pip-api?logo=pypi&style=flat&color=blue)][#pypi-package] [![PyPI - 包版本](https://img.shields.io/pypi/v/pip-api?logo=pypi&style=flat&color=orange)][#pypi-package] [![Conda - 平台](https://img.shields.io/conda/pn/conda-forge/pip-api?logo=anaconda&style=flat)][#conda-forge-package] [![Conda (仅频道)](https://img.shields.io/conda/vn/conda-forge/pip-api?logo=anaconda&style=flat&color=orange)][#conda-forge-package] [![Conda 配方](https://img.shields.io/static/v1?logo=conda-forge&style=flat&color=green&label=recipe&message=pip-api)][#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, 代码执行, 依赖管理, 包管理, 后端开发, 开发库, 数据管道, 无后门, 网络调试, 自动化, 虚拟环境, 软件工程, 进程调用, 逆向工具, 非官方库