我有一个Python文件,可能必须支持Python版本<3.x和> = 3.x. 有没有办法反省Python运行时知道它正在运行的版本(例如2.6 or 3.2.x)?
Chr*_*ris 432
当然,看看sys.version和sys.version_info.
例如,要检查您是否正在运行Python 3.x,请使用
import sys
if sys.version_info[0] < 3:
raise Exception("Must be using Python 3")
Run Code Online (Sandbox Code Playgroud)
这sys.version_info[0]是主要版本号.sys.version_info[1]会给你次要的版本号.
在Python 2.7及更高版本中,组件sys.version_info也可以通过名称访问,因此主要版本号是sys.version_info.major.
小智 72
尝试此代码,这应该工作:
import platform
print(platform.python_version())
Run Code Online (Sandbox Code Playgroud)
小智 23
import sys
if sys.hexversion >= 0x3000000:
print('Python 3.x hexversion %s is in use.' % hex(sys.hexversion))
Run Code Online (Sandbox Code Playgroud)
Ben*_*ner 11
最佳解决方案取决于代码不兼容的程度.如果有很多地方需要支持Python 2和3,那么six是兼容性模块.six.PY2和six.PY3两个布尔值,如果你想查询的版本.
但是,比使用大量if语句更好的解决方案是尽可能使用six兼容性函数.假设,如果Python 3000有一个新的语法next,有人可以更新,six所以你的旧代码仍然可以工作.
import six
#OK
if six.PY2:
x = it.next() # Python 2 syntax
else:
x = next(it) # Python 3 syntax
#Better
x = six.next(it)
Run Code Online (Sandbox Code Playgroud)
干杯
如果您想以人类可读的形式查看所有血腥细节,您可以使用:
import platform;
print(platform.sys.version);
Run Code Online (Sandbox Code Playgroud)
我系统的输出:
3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0]
Run Code Online (Sandbox Code Playgroud)
一些非常详细但机器可解析的东西是version_info从对象中获取对象platform.sys,然后使用其属性来采取预定的操作过程.例如:
import platform;
print(platform.sys.version_info)
Run Code Online (Sandbox Code Playgroud)
我的系统输出:
sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0)
Run Code Online (Sandbox Code Playgroud)
这是我sys.version_info用来检查Python安装的一些代码:
def check_installation(rv):
current_version = sys.version_info
if current_version[0] == rv[0] and current_version[1] >= rv[1]:
pass
else:
sys.stderr.write( "[%s] - Error: Your Python interpreter must be %d.%d or greater (within major version %d)\n" % (sys.argv[0], rv[0], rv[1], rv[0]) )
sys.exit(-1)
return 0
...
# Calling the 'check_installation' function checks if Python is >= 2.7 and < 3
required_version = (2,7)
check_installation(required_version)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
203951 次 |
| 最近记录: |