我正在研究实现科学模型的python软件包,我想知道什么是处理可选功能的最佳方法。这是我想要的行为:如果无法导入一些可选的依赖项(例如,在无头计算机上绘制模块),我想在我的类中禁用使用这些模块的功能,并警告用户如果他尝试使用它们以及所有这些,而不会破坏执行力。因此以下脚本在任何情况下均适用:
mymodel.dostuff()
mymodel.plot() <= only plots if possible, else display log an error
mymodel.domorestuff() <= get executed regardless of the result of the previous statement
Run Code Online (Sandbox Code Playgroud)
到目前为止,我看到的选项如下:
__init __.py可用模块并保留它们的列表(但是如何在包装的其余部分中正确使用它?)try import ...
except ...语句这些选项应该可以使用,但是它们似乎都非常笨拙且难以维护。如果我们想完全删除依赖项怎么办?还是强制性?