根据已安装Python版本导入模块?

17 投票
3 回答
12819 浏览
提问于 2025-04-15 16:50

我现在的模块里引入了 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 的情况下是没法工作的,就像你举的例子一样。

撰写回答