[英]What's the Pythonic way to write conditional statements based on installed modules?
来自C ++世界,我习惯于使用像CMake之类的工具在编译时确定的标志来编写条件编译。 我想知道模仿这个功能最恐怖的方式是什么。 例如,这是我目前设置的,具体取决于是否找到模块:
import imp
try:
imp.find_module('petsc4py')
HAVE_PETSC=True
except ImportError:
HAVE_PETSC=False
然后我可以在我的其余Python代码中使用HAVE_PETSC
。 这有效,但我想知道它是否是在Python中使用它的正确方法。
是的,没关系。 您甚至可以直接发出导入,并使用modulename本身作为标志 - 如:
try:
import petsc4py
except ImportError
petsc4py = None
在任何使用之前,只需测试petsc4py
本身的真实性。
实际上,检查它是否存在,然后只是尝试导入它,由于冗余而感觉是unpythonic,因为两个动作都会触发ImportError。 但是检查有一个HAVE_PETSC
变量是可以的 - 它可以在上面的try / except之后使用HAVE_PETSC = bool(petsc4py)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.