2008-12-04 21 views
13

Python'da bir sürüme özgü bir modülü içe aktarmanın en mantıklı yöntemi hangisidir? Benim kullanım durumum python 2.3 ortamına dağıtılacak kod yazıyor ve birkaç ay içinde python 2.5'e yükseltiliyor. Bu:Sürüme özgü python modüllerini içe aktarmanın en iyi yolu

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

veya bu

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

Ben iki durumda eşit doğru olduğunu ve doğru çalıştığını biliyorum ama bir tercih edilir?

cevap

27

Her zaman ikinci yol - farklı Python yüklemelerinin ne zaman yükleneceğini asla bilemezsiniz. Template, daha az önemli olduğu özel bir durumdur, ancak sürüm yerine yetenekleri test ettiğinizde, her zaman daha sağlam olursunuz.

Testoob desteğini bu şekilde yaparım. Python 2.2 - 2.6: Çalışana kadar farklı yollarla bir modül almaya çalışıyorum. Aynı zamanda üçüncü taraf kütüphaneleriyle de ilgilidir.

İşte uç bir durum - elementtree görünmesi için farklı seçenekler destekleyen:

Sen Python 2.5 için ET` olarak xml.etree ithalat cElementTree gelen `özledik
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

ve yukarı – jfs

+0

haklısın :) – orip

2

Muhtemelen ikincisinin tercih edileceğini iddia ediyorum. Bazen, bir modülü python'un daha yeni bir sürümünden daha eski bir bilgisayara yükleyebilirsiniz. Örneğin, wsgiref Python 2.5 ile birlikte gelir, ancak daha eski sürümlere yüklenebilmesi tamamen yaygın değildir (python 2.3 ile çalışacağını düşünüyorum).

İlgili konular