سؤال

ما هي طريقة تروق لاستيراد وحدة نمطية في الثعبان الذي هو الإصدار محددة؟ استخدامي القضية هي أنني التعليمات البرمجية التي سيتم نشرها في بيئة بيثون 2.3 وفي غضون أشهر قليلة أن تتم ترقية إلى الثعبان 2.5 الكتابة. هذا:

if sys.version_info[:2] >= (2, 5):
    from string import Template
else:
    from our.compat.string import Template

وأو هذا

try:
    from string import Template
except ImportError:
    from our.compat.string import Template

وأنا أعلم أن كلتا الحالتين صحيحة على قدم المساواة وتعمل بشكل صحيح ولكن أي واحد هو الأفضل؟

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

المحلول

ودائما الطريقة الثانية - أنت لا تعرف أبدا ما سوف يكون تركيب المنشآت بيثون مختلفة. Template حالة خاصة حيث يهم أقل، ولكن عند اختبار لقدرة بدلا من الإصدارات كنت دائما أكثر قوة.

وهذه هي الطريقة التي أقوم Testoob دعم بيثون 2،2-2،6: I محاولة استيراد وحدة نمطية بطرق مختلفة حتى يعمل. كما انها ذات الصلة مكتبات 3rd الطرف.

وهنا حالة متطرفة - دعم خيارات مختلفة لElementTree لتظهر:

try: import elementtree.ElementTree as ET
except ImportError:
    try: import cElementTree as ET
    except ImportError:
        try: import lxml.etree as ET
        except ImportError:
            import xml.etree.ElementTree as ET # Python 2.5 and up

نصائح أخرى

وأنا ربما يجادل بأن والثاني هو الأفضل. أحيانا، يمكنك تركيب وحدة من إصدار أحدث من الثعبان إلى كبار السن واحد. على سبيل المثال، wsgiref يأتي مع بيثون 2.5، ولكن ليس من غير المألوف تماما لذلك ليتم تثبيتها في الإصدارات القديمة (أعتقد أنها ستعمل مع الثعبان 2.3 متابعة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top