2008-12-04 6 views
13

Phương pháp nào có ý nghĩa nhất khi nhập mô-đun trong python là phiên bản cụ thể? Trường hợp sử dụng của tôi là tôi đang viết mã sẽ được triển khai vào một môi trường 2,3 trăn và trong một vài tháng được nâng cấp lên python 2.5. Đây:Cách tốt nhất để nhập mô-đun python phiên bản cụ thể

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

hay này

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

Tôi biết rằng cả hai trường hợp cũng không kém phần chính xác và hoạt động chính xác nhưng cái nào là thích hợp?

Trả lời

27

Luôn là cách thứ hai - bạn không bao giờ biết những cài đặt Python khác nhau sẽ được cài đặt. Template là một trường hợp cụ thể mà nó quan trọng ít hơn, nhưng khi bạn kiểm tra khả năng thay vì phiên bản bạn luôn mạnh mẽ hơn.

Đó là cách tôi thực hiện hỗ trợ Testoob Python 2.2 - 2.6: Tôi cố nhập mô-đun theo các cách khác nhau cho đến khi nó hoạt động. Nó cũng có liên quan đến thư viện của bên thứ ba.

Dưới đây là một trường hợp cực đoan - hỗ trợ tùy chọn khác nhau cho ElementTree xuất hiện:

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

Bạn đã bỏ lỡ 'từ cElementTree xml.etree nhập khẩu theo ET' cho Python 2.5 và lên – jfs

+0

bạn nói đúng :) – orip

2

Tôi có thể cho rằng điều thứ hai sẽ thích hợp hơn. Đôi khi, bạn có thể cài đặt một mô-đun từ một phiên bản mới hơn của python vào một phiên bản cũ hơn. Ví dụ, wsgiref đi kèm với Python 2.5, nhưng nó không phải là hoàn toàn không phổ biến cho nó được cài đặt vào phiên bản cũ hơn (tôi nghĩ rằng nó sẽ làm việc với python 2.3 lên).