根据已安装Python版本导入模块?
我现在的模块里引入了 json
模块,但这个模块只在 Python 2.6 版本中可用。我想检查一下 Python 的版本,如果是 2.5,就引入 simplejson
模块,因为这个模块可以在 2.5 上使用(而且在 2.6 中也被采用了)。我想做的事情大概是这样的:
if __version__ 2.5:
import simplejson as json
else:
import json
请问有什么好的方法来实现这个吗?
3 个回答
2
你可以在不处理导入错误的情况下,导入一个或多个模块:
import sys
major_version = sys.version_info.major
if major_version == 2:
import SocketServer
import SimpleHTTPServer
import urllib2
elif major_version == 3:
import http.server as SimpleHTTPServer
import socketserver as SocketServer
import urllib.request as urllib2
19
虽然使用ImportError的方法(SilentGhost的回答)在这个例子中确实是最好的,但如果有人想要使用__version__
这个东西,可以用下面这样的方式:
import sys
if sys.version_info < (2, 6):
import simplejson as json
else:
import json
不过要特别说明,这并不是你想要做的“最佳方式”... 这只是用__version__
来展示你想表达的内容的正确方法。
23
try:
import simplejson as json
except ImportError:
import json
当然了,这种方法在 Python 2.5 中如果你没有安装 simplejson
的情况下是没法工作的,就像你举的例子一样。