[英]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.