如何支持 Python 包中的替代依赖项?

ws_*_*421 3 python packaging python-wheel

我用 Python 编写了一个与 Qt 框架配合使用的实用程序库。我的代码是纯Python,并且与PyQt5和PySide2兼容。我的主模块可以从命令行单独运行python -m,也可以导入到另一个项目中。有没有一种干净的方法来指定项目在其轮子发行版中需要 PyQt5 或 PySide2?

这是我在研究中发现的内容,但我想知道是否有比这些选项更好的方法来打包项目:

我可以在项目的源代码分发中添加逻辑setup.py来检查 PyQt5 和 PySide2。然而,轮子是分发 Python 项目的推荐方式,据我所知,这种安装时逻辑使用轮子是不可能的。或者,我无法指定 PySide2 或 PyQt5 作为依赖项,并在安装说明中建议将其中之一与我的项目一起安装。

phd*_*phd 6

使用extras_require

\n\n
setup(\n    \xe2\x80\xa6\n    extras_require={\n        \'pyqt5\': [\'PyQt5\'],\n        \'pyside2\': [\'PySide2\'],\n    },\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

并教您的用户运行

\n\n
pip install \'yourpackage[pyqt5]\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
pip install \'yourpackage[pyside2]\'\n
Run Code Online (Sandbox Code Playgroud)\n