从Python脚本中检查Python版本,根据版本使用if/else语句。

4

我希望知道在脚本内部是否有一种方法可以知道使用的是哪个版本的Python?以下是我想使用它的当前示例:

如果使用的是Python 2,我想让Python脚本使用Unicode,否则不使用Unicode。我目前安装了Python 2.7.5和Python 3.4.0,并在Python 3.4.0下运行我的当前项目。以下是示例脚本:

_base = os.path.supports_unicode_filenames and unicode or str

出现错误:

    _base = os.path.supports_unicode_filenames and unicode or str
NameError: name 'unicode' is not defined

所以为了使它能够正常工作,我将其更改为以下内容:

_base = os.path.supports_unicode_filenames and str

有没有办法将它更改为以下内容:
if python.version == 2:

    _base = os.path.supports_unicode_filenames and unicode or str

else:

    _base = os.path.supports_unicode_filenames and str
4个回答

4
您已经非常接近了:
import sys
sys.version_info

Would return:

sys.version_info(major=2, minor=7, micro=4, releaselevel='final', serial=0)

你可以像这样做:

你可以像这样做:

import sys
ver = sys.version_info[0]
if ver == 2:
    pass

2

您应该仔细研究six库,以更好地支持Python 2和3之间的差异。


谢谢Daniel Roseman。那个库看起来非常有用。我得开始更多地使用它,然后肯定它会在这种情况下起作用。 - Aaron Lelevier

2

使用sys.version_info来检查你的Python版本,例如:

import sys

if sys.version_info[0] == 2:
    ... stuff
else:
    ... stuff

2
您可以在Python 3中定义unicode
try:
    unicode = unicode
except NameError: # Python 3 (or no unicode support)
    unicode = str # str type is a Unicode string in Python 3

要检查版本,您可以使用 sys.version, sys.hexversion, sys.version_info

import sys

if sys.version_info[0] < 3:
   print('before Python 3 (Python 2)')
else: # Python 3
   print('Python 3 or newer')

我将此标记为已接受的答案,因为它准确地解决了处理“找不到'unicode'错误”以及如何继续的问题。 - Aaron Lelevier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接