hashlib / md5。 Python 2.4との互換性
-
07-07-2019 - |
質問
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
....
インターフェースが異なる場合、指定したとおりにインターフェースを調整するアダプターを作成する必要があります。
所属していません StackOverflow