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

标签 python module lxml

以下情况:我编写了一个提供某些功能的模块。在此过程中,它可以调用一些命令并解析它们的输出。现在,我通过使其能够解析 XML 输出来扩展该模块。当然,从那时起,该模块就依赖于 lxml。我没有考虑太多,因为 lxml 并不是什么大问题。

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

现在我想知道:当且仅当已安装 lxml 时,我的模块是否可以以提供处理 XML 数据的方法的方式实现?此功能不是必需的并且很少使用。为模块提供基本功能但如果其他模块也可用则获得更多功能的最佳 pythonic 方法是什么?我的想法是对特定模块是否存在以及是否无法引发异常进行某种测试。如何在 python 中以良好的方式实现这一点?我正在使用 Linux 上提供的默认实现。在其他 python 解释器/编译器平台上使用此 python 源代码是否可以以不中断的方式实现该功能?

最佳答案

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

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

关于python - 如果安装了特定模块,如何在 python 中提供某些功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989359/

相关文章:

java - 如何将这种鸭子类型(duck typing)(Python)转换为 Java 泛型?

linux - USB 存储驱动程序在 Linux 中如何工作?

python - 奇怪的 lxml 行为

python - 按 3 列分组,每组只保留最小的 5 列

python - 无需递归访问嵌套列表和字典中的所有元素

C - LuaJit 将自定义模块名称分配给已编译的字符串

javascript - 在 Node Express 应用程序的模块中使用变量

python - 在 Python 中将 unicode 字符编码为 HTML 实体,不包括标签

python - 如何将 lxml xpath 函数导入默认命名空间?

python - 匹配文件名后撤消 files.split (python 3.x)