简体   繁体   中英

check python version(s) from within a python script and if/else based on that

Basically I'd like to know if there is a way to know what version of python a script is using from within the script? Here's my current example of where I'd like to use it:

I would like to make a python script use unicode if it is using python 2, but otherwise not use unicode. I currently have python 2.7.5 and python 3.4.0 installed, and am running my current project under python 3.4.0. The following scirpt:

_base = os.path.supports_unicode_filenames and unicode or str

was returning the error:

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

So I changed it to this in order to get it to work:

_base = os.path.supports_unicode_filenames and str

Is there a way to change it to something to this effect:

if python.version == 2:

    _base = os.path.supports_unicode_filenames and unicode or str

else:

    _base = os.path.supports_unicode_filenames and str

You are very close:

import sys
sys.version_info

Would return:

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

and you can do something like this:

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

Use sys.version_info to check your Python version. For example:

import sys

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

您应该查看six库以更好地支持Python 2和3之间的差异。

You could define unicode for Python 3:

try:
    unicode = unicode
except NameError: # Python 3 (or no unicode support)
    unicode = str # str type is a Unicode string in Python 3

To check version, you could use 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')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM