2008-12-04 8 views
13

कौन सा तरीका पाइथन में मॉड्यूल आयात करने के लिए सबसे अधिक समझ में आता है जो संस्करण विशिष्ट है? मेरा उपयोग मामला यह है कि मैं कोड लिख रहा हूं जिसे एक पायथन 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 

मुझे पता है कि किसी भी स्थिति समान रूप से सही है और सही ढंग से काम करता है लेकिन जो एक बेहतर है?

उत्तर

27

हमेशा दूसरा तरीका - आप कभी नहीं जानते कि पाइथन इंस्टॉलेशन कितने अलग होंगे। Template एक विशिष्ट मामला है जहां यह कम मायने रखता है, लेकिन जब आप संस्करण के बजाय क्षमता के लिए परीक्षण करते हैं तो आप हमेशा अधिक मजबूत होते हैं।

इस प्रकार मैं Testoob समर्थन पाइथन 2.2 - 2.6 का समर्थन करता हूं: जब तक यह काम नहीं करता है, मैं मॉड्यूल को विभिन्न तरीकों से आयात करने का प्रयास करता हूं। यह तीसरे पक्ष के पुस्तकालयों के लिए भी प्रासंगिक है।

यहाँ एक चरम मामला है - विभिन्न विकल्पों का समर्थन 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 
+0

आप अजगर 2.5 के लिए ET' रूप xml.etree आयात cElementTree से नहीं छूटा है 'और ऊपर – jfs

+0

तुम सही हो :) – orip

2

मैं शायद तर्क दूंगा कि दूसरा एक बेहतर होगा। कभी-कभी, आप एक पुराने संस्करण में पाइथन के एक नए संस्करण से एक मॉड्यूल स्थापित कर सकते हैं। उदाहरण के लिए, wsgiref पायथन 2.5 के साथ आता है, लेकिन यह पुराने संस्करणों में स्थापित होने के लिए पूरी तरह से असामान्य नहीं है (मुझे लगता है कि यह पायथन 2.3 अप के साथ काम करेगा)।