如果安装了特定模块,如何在 python 中提供某些功能?

How to provide certain functionality in python if specific modules are installed?

以下情况:我编写了一个提供某些功能的模块。在这样做时,它可以调用一些命令并解析它们的输出。在某些时候,我现在通过启用它来解析 XML 输出来扩展这个模块。当然,从那时起,这个模块现在依赖于 lxml。我没有考虑那么多,因为 lxml 没什么大不了的。

直到我 - 只是偶然 - 碰巧在 Raspbian 安装中使用了我的 python 模块。由于此安装是全新的,我尝试使用 pip 安装 lxml。未能在该平台上编译。 (我猜是因为 500 MByte 的内存不足以在这样的平台上构建 lxml。)

现在我想知道:我的模块能否以这样一种方式实现,即当且仅当 lxml 已安装时,它才提供处理 XML 数据的方法?此功能不是必需的,也很少使用。什么是最好的 pythonic 方法来提供具有基本功能的模块,但如果其他一些模块也可用,则获得更多的功能?我的想法是对特定模块的存在执行某种测试,如果未能引发异常。如何在 python 中以好的方式完成?我正在使用 Linux 上提供的默认实现。在其他 python interpreter/compiler 平台上使用此 python 源代码能否以不中断的方式实现该功能?

尝试导入。根据成功设置标志。

try:
  import foo
  fooavailable = True
except ImportError:
  fooavailable = False