1

我有提供同步和异步接口的通用 http 客户端库。在它下面使用requestsaiohttp。我的大多数项目都使用同步或异步版本,因此没有理由同时aiohttp要求requests. 为了解决这个问题,setup.py我有以下内容:extras_requiresetup.py

extras_require={
    "async": ["aiohttp"],
    "sync": ["requests"],
    "all": ["aiohttp", "requests"],
}

唯一的问题是,如果您安装我的 http 客户端软件包而没有任何附加功能,那真的没有意义,因为由于缺少依赖项,您将无法同时使用这两个版本。

有没有办法验证我的 Python 包是否安装了至少一个指定的附加功能?可能是我的某种钩子setup.py

4

1 回答 1

1

我知道没有直接的解决方案。

我能想到的一个更复杂的解决方案是发布另外两个名为的项目something-syncsomething-async每个项目只有一个依赖项:something[sync]something[async]分别(假设您的项目名为something)。使用良好的 CI/CD 工具,这将相对容易实现。

于 2019-09-27T12:38:54.793 回答