导入特定于版本的python模块的最佳方法

mcr*_*ute 13 python migration module code-migration

哪种方法最适合在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
Run Code Online (Sandbox Code Playgroud)

或这个

try:
    from string import Template
except ImportError:
    from our.compat.string import Template
Run Code Online (Sandbox Code Playgroud)

我知道这两种情况都同样正确且工作正常但哪一种更可取?

ori*_*rip 27

始终是第二种方式 - 您永远不会知道将安装哪些不同的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
Run Code Online (Sandbox Code Playgroud)