我不时在使用Python编写代码时,我不得不使用某些第三方模块。
EG。当我编写用户身份验证时,可以通过多种方式完成,其中一种方法是使用LDAP。但是,如果用户不想使用LDAP身份验证,他可以在配置文件中选择其他选项,在这种情况下,他不应该安装ldap模块。
一般来说,我通过以下方式解决这个问题:
if config.foo:
import ldap_auth as auth
elif config.foo2:
import other_auth as auth
...
auth.do_stuff(...)
我只在ldap_auth模块中导入ldap模块。我个人认为这很好,但是,当然,doctests在尝试执行ldap_auth时会引发ImportError。
现在,我知道我可以通过尝试在ldap_auth中导入ldap模块来捕获它,但这只是有点混乱看起来漂亮的代码(整个“import ldap_auth as auth”商务的全部意义在于避免ImportErrors)。
在使用此“模式”时,是否有更优雅的方法可以防止doctests引发ImportErrors?
干杯,
汤姆
答案 0 :(得分:1)
推荐的方法是
try:
import foo as auth
except ImportError:
import bar as auth
它避免了竞争条件,我不认为它看起来很糟糕。