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)