如何在不将所有内容放在try / except块中的情况下处理可能丢失的软件包?

时间:2018-09-13 07:58:46

标签: python dependencies python-import

我正在使用一个模块开发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中是否有更好的方法来处理此问题?

谢谢

0 个答案:

没有答案