点额外依赖替换



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

theirmodule
theirmodule-binary

我的模块取决于theirmodule但我希望我的模块的用户能够决定他们是否需要依赖项的 lib 版本或二进制版本。我在文档中看到有关附加功能的信息。我可以做:

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

但是,如果用户这样做pip install mymodule[BIN]pip将同时安装theirmoduletheirmodule-binary。这将是一个冲突,因为两者都具有相同的底层导入字符串,例如:

import theirmodule

用于两者。如何在不提供 2 个单独的 pypi 包的情况下处理此问题?

也许像下面这样:

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'],
},
)

然后指示My-Project的用户(可能在自述文件中(通过显式指定其中一个安装。例如,对于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]'

相关内容

  • 没有找到相关文章

最新更新