Pip Extras依赖替换

问题描述 投票:0回答:1

我正在创建一个只有1个pypi依赖项的模块。这个依赖在pypi上有2个软件包。一个使用系统库,另一个使用该库的二进制发行版。它们看起来像:

theirmodule
theirmodule-binary

我的模块取决于theirmodule,但我希望模块的用户能够决定他们是否需要依赖项的lib版本或二进制版本。我在docs about Extras中看到了。我可以做:

setup(
    name="MyModule",
    ...
    extras_require={
        "BIN":  ["theirmodule-binary>=1.2"]
    }
)

但是如果用户执行pip install mymodule[BIN],则点子将同时安装theirmoduletheirmodule-binary。这将是一个冲突,因为它们都有相同的基础导入字符串,例如:

import theirmodule

用于两者。不提供2个单独的pypi包怎么办?

pip setuptools python-packaging
1个回答
0
投票

也许类似于以下内容:

setup.py

import setuptools
setuptools.setup(
    name='My-Project',
    # ...
    extras_require={
        'Extra-Dependency-As-Binary': ['Dependency-Project-Binary>=1.2'],
        'Extra-Dependency-As-Library': ['Dependency-Project-Library<=3.4'],
    },
)

然后通过明确指定extra之一来指示My-Project(可能在README文件中)的用户进行安装。例如,使用pip可以是以下之一:

  • path/to/pythonX.Y -m pip install 'My-Project[Extra-Dependency-As-Binary]'
  • path/to/pythonX.Y -m pip install 'My-Project[Extra-Dependency-As-Library]'
© www.soinside.com 2019 - 2024. All rights reserved.