哪种方法最适合在python中导入特定于版本的模块?我的用例是我正在编写将部署到python 2.3环境中的代码,并在几个月内升级到python 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
我知道这两种情况都同样正确且工作正常但哪一种更可取?
始终是第二种方式 - 您永远不会知道将安装哪些不同的Python安装.Template
是一个特殊情况,它更重要,但当你测试功能而不是版本控制时,你总是更健壮.
这就是我如何使Testoob支持Python 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