سؤال

والثعبان 2.6 تقارير تفيد بأن وحدة MD5 قد عفا عليه الزمن ويجب استخدام hashlib. إذا قمت بتغيير import md5 إلى import hashlib أنا سوف يحل الثعبان 2.5 و 2.6 الثعبان، ولكن ليس لبيثون 2.4، والذي ليس لديه وحدة hashlib (مما يؤدي إلى ImportError، وهو ما يمكن أن قبض).

والآن، لإصلاح ذلك، وأنا يمكن أن تفعل حاول / الصيد، وتحديد وظيفة getMd5 () بحيث يحصل تعريف واحد مناسب وفقا لنتيجة كتلة المحاولة. هل هذا الحل طيب؟

وكيف حل هذه المسألة في حالة أكثر عمومية، مثل، على سبيل المثال: لديك اثنين من مكتبات مختلفة مع نفس واجهة موضوعية ولكنها مختلفة، وكنت ترغب في استخدام واحد، ولكن تراجع واستخدام البعض إذا كان الأول لم يتم العثور على واحد.

هل كانت مفيدة؟

المحلول

في عام التركيبة التالي على ما يرام:

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