أفضل طريقة لاستيراد وحدات بيثون إصدار محدد
-
19-08-2019 - |
سؤال
ما هي طريقة تروق لاستيراد وحدة نمطية في الثعبان الذي هو الإصدار محددة؟ استخدامي القضية هي أنني التعليمات البرمجية التي سيتم نشرها في بيئة بيثون 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 متابعة).