1

Python でコーディングするときは、特定のサードパーティ製モジュールを使用せずに済ませなければならないことがあります。

例えば。私がユーザー認証を書いているとき、それはいくつかの方法で行うことができますが、そのうちの 1 つは 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 モジュールを ldap_auth にインポートしようとすることでそれをキャッチできることはわかっていますが、それは見栄えの良いコードを台無しにするだけです (「ldap_auth を auth としてインポートする」ビジネス全体を実行することの要点は、ImportErrors を回避することでした)。 .

この「パターン」を使用するときに doctests が ImportErrors を発生させないようにする、より洗練された方法はありますか?

乾杯、

トム

4

1 に答える 1

1

推奨される方法は

try:
    import foo as auth
except ImportError:
    import bar as auth

競合状態を回避し、見た目は悪くないと思います。

于 2010-04-06T12:45:18.527 に答える