我目前正在python中开发一个命令行应用程序,我将上传到pypi,供最终用户pip install
使用。我利用extras
中的setup.py
功能来支持我的应用程序的两个版本,一个是具有最小依赖性的基本功能版本,另一个是功能更丰富但具有大量依赖性( numpy,pandas,networkx,matplotlib等)
如此简短:
pip install app # simple, no deps
pip install app[all] # all the deps
现在的问题是,我在功能丰富的版本中的一个依赖项已被描述为“flakey”pypi支持。基本上,除非在整个安装过程发生之前已经预先安装了其中一个依赖项,否则无法安装它。幸运的是(或者没有),我的应用程序(它引入了这个flakey模块)也有所需的flakey模块模块。让我们参考flakey模块需要预先安装的模块fixer-module
所以:
pip install app[all] # triggers the installation of flakey module
如果未安装fixer-module,安装将失败,即使它将在flakey模块之前安装。基本上必须这样做:
pip install fixer-module
pip install app[all]
现在我想要做的是包含一些完成以下内容的检查代码:
app[all]
发行版时运行try import fixer-module, except ImportError
检查并打印解释情况的消息。我一直在研究这个问题。我找到了一些检查输入参数setup.py
以及诸如此类的东西的示例,但它们似乎都没有涵盖在最终用户安装过程中如何处理内容。任何指针都非常感谢!