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
。
我有一个 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
。