来自C ++世界,我习惯于基于标志来编写条件编译,这些标志是在编译时使用CMake等工具确定的。我想知道模仿此功能的最Python方式是什么。例如,这是我当前根据是否找到模块设置的设置:
import imp
try:
imp.find_module('petsc4py')
HAVE_PETSC=True
except ImportError:
HAVE_PETSC=False
然后,我可以使用HAVE_PETSC
其余的Python代码。这行得通,但是我想知道这是否是在Python中执行此操作的正确方法。
是的,没关系。您甚至可以直接发出导入,并将modulename本身用作标志-如:
try:
import petsc4py
except ImportError
petsc4py = None
在使用之前,只需测试其真实性即可petsc4py
。
实际上,由于存在冗余,因此检查它是否存在,然后才尝试将其导入,就感觉异常了,因为这两个操作均会触发ImportError。但是有一个HAVE_PETSC
检查变量是可以的-可以在上面的try / except之后创建它HAVE_PETSC = bool(petsc4py)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句