python3 对可选导入的看法

A python3 perspective on optional imports

我有一个 python 包,它 可以 使用 matplotlib 帮助用户可视化开发过程中发生的事情,但对于服务器部署,视觉效果完全没有必要。

因此我考虑放宽要求并将进口商定义为:

try:
    from matplotlib import pyplot as plt
    enable_visuals = True
except ImportError:
    enable_visuals = False

然后在几个相关函数中添加:

def visualise(self):
    if not enable_visuals:
        raise ImportError("visualise is not available unless matplotlib is installed")

关于此模式的参数 pro/con?

对于您的用例,我认为此模式没有任何问题。当未安装 matplotlib 包时,这是一种指示可视化被禁用的透明方式。

你的 visualise 函数在我看来可以作为装饰器很好地实现,允许你标记哪些函数需要启用可视化,如:

def visualise(func):                                                            
    def wrapper():                                                              
        if not enable_visuals:                                                  
            raise ImportError("visualise is not available unless matplotlib is installed")
        func()                                                                  
    return wrapper                                                              

@visualise                                                                      
def run(): 
    # This will only execute if enable_visuals is True, otherwise raises ImportError                                                             
    pass

总的来说,您可能想要了解如何 could mask some ImportErrors