hashlib / md5. Совместимость с питоном 2.4
-
07-07-2019 - |
Вопрос
python 2.6 сообщает, что модуль md5 устарел, и следует использовать hashlib. Если я изменю import md5
на import hashlib
, я решу для python 2.5 и python 2.6, но не для python 2.4, у которого нет модуля hashlib (что приводит к ImportError, которая Я могу поймать).
Теперь, чтобы исправить это, я мог бы сделать попытку / поймать и определить функцию getMd5 (), чтобы надлежащая была определена в соответствии с результатом блока try. Это решение хорошо? Р>
Как бы вы решили эту проблему в более общем случае, например: у вас есть две разные библиотеки с одинаковой целью, но разным интерфейсом, и вы хотите использовать одну, но отступите и воспользуйтесь другой, если первый один не найден.
Решение
В общем случае следующая конструкция вполне подходит:
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
....
В случае, если они имеют разные интерфейсы, вам нужно написать адаптер для выравнивания интерфейсов, как вы указали.