跳转到主要内容

非官方、可导入的pip API

项目描述

GitHub - License PyPI - Python Version PyPI - Package Version Conda - Platform Conda (channel only) Conda Recipe

由于 pip 是一个命令行工具,它没有官方、受支持的、可导入 的API。

但这并不意味着人们没有尝试过 导入pip,通常在pip的维护者进行常规重构时会导致许多头痛。

目标

此项目的目标是提供一个可导入的 pip API,该API完全符合从程序中推荐使用 pip 的方法。

如何实现?通过提供一个可导入的API,该API封装了到 pip 的命令行调用,这个库可以用作现有使用pip的内部API的替换。

范围

此目标意味着添加到这里的任何新API都必须具有以下等效功能

  • 某些内部 pip API(或内部API的组合)
  • 某些CLI调用(或CLI调用的组合)

任何当前无法通过内部 pip API或CLI调用实现的功能都不在范围之内。

安装

您可以使用 pipconda 安装 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版本作为字符串,例如"9.0.1"

  • pip_api.installed_distributions(local=False)

    返回一个包含以下属性的Distribution对象列表,表示所有已安装的分发

    • Distribution.name (string):已安装分发的名称
    • Distribution.version (packaging.version.Version):已安装分发的版本
    • Distribution.location (string):已安装分发的位置
    • Distribution.editable (bool):分发是否可编辑。可选地接受一个local参数以过滤出全局安装的包
  • pip_api.parse_requirements(filename, options=None, include_invalid=False, strict_hashes=False)

    接受一个包含需求文件名的路径。返回一个从包名到pip_api.Requirement对象(packaging.requirements.Requirement子类的映射)的映射,具有以下属性

    • Requirement.name (string):需求名称。
    • Requirement.extras (set):需求指定的额外内容集合。
    • Requirement.specifier (packaging.specifiers.SpecifierSet):需求指定的版本SpecifierSet
    • Requirement.marker (packaging.markers.Marker):需求标记的Marker。可以是None
    • Requirement.hashes (dict):需求的哈希映射,对应于--hash=...选项。
    • Requirement.editable (bool):需求是否可编辑,对应于-e ...
    • Requirement.filename (str):需求来源的文件名。
    • Requirement.lineno (int):解析需求的源行号。

    可选地接受一个options参数以覆盖用于跳过需求行的正则表达式。可选地接受一个include_invalid参数,如果需求无法正确解析,则返回一个UnparsedRequirement。可选地接受一个strict_hashes参数,要求所有需求都有关联的哈希。

pip>=8.0.0版本起可用

  • pip_api.hash(filename, algorithm='sha256')

    以字符串的形式返回结果。有效的algorithm参数是'sha256''sha384''sha512'

pip>=19.2版本起可用

  • pip_api.installed_distributions(local=False, paths=[])

    如上所述,但有一个额外的可选参数paths,用于提供查找已安装分发的位置列表。尝试使用pip<19.2paths参数将导致PipError

用例

该库被许多其他工具使用,包括

  • pip-audit,用于分析已知漏洞的依赖关系
  • pytest-reqs,用于比较需求文件与测试依赖关系
  • hashin,用于向需求文件添加哈希锁定
  • ...还有更多。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

pip_api-0.0.34.tar.gz (123.0 kB 查看哈希值)

上传时间

构建分发

pip_api-0.0.34-py3-none-any.whl (120.4 kB 查看哈希值)

上传时间 Python 3

由以下支持