我正在使用一个模块开发Python库,该模块依赖于PyPi或Anaconda无法提供的第三方软件包。 如果依赖关系在系统上可用,则该模块应公开一些功能,否则将失败并显示一条适当的消息。
目前,我将按照以下方式进行处理:
try:
import the_dependency as td
def foo(x):
return td.bar(x)
except ImportError:
print('Failed to import the_dependency, the whole module will not be available')
这暂时有效,但是我不喜欢在try块中包含函数声明的想法(看起来很杂乱)。 我查看了其他具有这种行为的库,并找到了以下解决方案:
try:
import the_dependency as td
except ImportError:
td = None
def foo(x):
if td is None:
raise ImportError('the_dependency is required to run foo')
return td.bar(x)
但同样,它看起来很杂乱,需要复制代码/错误消息。
在Python中是否有更好的方法来处理此问题?
谢谢