質問

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

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

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

役に立ちましたか?

解決

一般に、次の構成は問題ありません:

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

特定の場合、おそらく:

try: 
   from hashlib import md5
except ImportError:
   from md5 import md5

他のヒント

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

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

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

インターフェースが異なる場合、指定したとおりにインターフェースを調整するアダプターを作成する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top