8

python 2.6は、md5モジュールが廃止されたため、hashlibを使用する必要があると報告しています。に変更import md5するimport hashlibと、python2.5とpython2.6は解決されますが、hashlibモジュールがないpython 2.4は解決されません(ImportErrorが発生します。これをキャッチできます)。

これを修正するために、try / catchを実行し、getMd5()関数を定義して、tryブロックの結果に従って適切な関数が定義されるようにします。この解決策は大丈夫ですか?

たとえば、目的は同じでインターフェースが異なる2つの異なるライブラリがあり、一方を使用したいが、最初のライブラリがそうでない場合はフォールバックしてもう一方を使用するなど、より一般的なケースでこの問題をどのように解決しますか。見つかった。

4

2 に答える 2

18

一般に、次の構成で問題ありません。

try:
    import module
except ImportError: 
    # Do something else.

あなたの特定のケースでは、おそらく:

try: 
   from hashlib import md5
except ImportError:
   from md5 import md5
于 2009-09-14T20:54:25.450 に答える
2

ここにあるように、モジュールが同じインターフェースを持っている場合、あなたが説明した解決策は問題ありません。次のように、インポートを独自のモジュールに分離することもできます。

hash.py
----
try:
   import hashlib.md5 as md5mod
except ImportError:
   import md5 as md5mod

-----
prog.py
-----
from hash import md5mod
....

それらが異なるインターフェースを持っている場合、あなたはあなたが指定したようにインターフェースを整列させるためにアダプターを書く必要があるでしょう。

于 2009-09-14T20:57:09.777 に答える