执行后可以查看python的版本的是_如何查看运行我的脚本的Python版本?

回答(18)

avatar.png

2 years ago

sys.version_info 似乎从3.7返回 tuple . 相反,它返回一个特殊的类,所以使用元组的所有示例都不是来自python控制台的输出:

>>> import sys

>>> type(sys.version_info)

我发现使用 sys.version_info.major 和 sys.version_info.minor 的组合似乎就足够了 . 例如,...

import sys

if sys.version_info.major > 3:

print('Upgrade to Python 3')

exit(1)

检查您是否正在运行Python 3.您甚至可以检查更具体的版本...

import sys

ver = sys.version_info

if ver.major > 2:

if ver.major == 3 and ver.minor <= 4:

print('Upgrade to Python 3.5')

exit(1)

可以检查你是否至少运行Python 3.5 .

avatar.png

2 years ago

使用 six 模块,您可以通过以下方式完成:

import six

if six.PY2:

# this is python2.x

else:

# six.PY3

# this is python3.x

avatar.png

2 years ago

只是为了好玩,以下是在CPython 1.0-3.7b2,Pypy,Jython和Micropython上进行的一种方式 . 这更像是一种好奇心,而不是现代代码中的一种方式 . 我把它写成了http://stromberg.dnsalias.org/~strombrg/pythons/的一部分,这是一个用于在多个python版本上同时测试代码片段的脚本,因此您可以轻松了解哪些python功能与哪些版本的python兼容:

via_platform = 0

check_sys = 0

via_sys_version_info = 0

via_sys_version = 0

test_sys = 0

try:

import platform

except (ImportError, NameError):

# We have no platform module - try to get the info via the sys module

check_sys = 1

if not check_sys:

if hasattr(platform, "python_version"):

via_platform = 1

else:

check_sys = 1

if check_sys:

try:

import sys

test_sys = 1

except (ImportError, NameError):

# just let via_sys_version_info and via_sys_version remain False - we have no sys module

pass

if test_sys:

if hasattr(sys, "version_info"):

via_sys_version_info = 1

elif hasattr(sys, "version"):

via_sys_version = 1

else:

# just let via_sys remain False

pass

if via_platform:

# This gives pretty good info, but is not available in older interpreters. Also, micropython has a

# platform module that does not really contain anything.

print(platform.python_version())

elif via_sys_version_info:

# This is compatible with some older interpreters, but does not give quite as much info.

print("%s.%s.%s" % sys.version_info[:3])

elif via_sys_version:

import string

# This is compatible with some older interpreters, but does not give quite as much info.

verbose_version = sys.version

version_list = string.split(verbose_version)

print(version_list[0])

else:

print("unknown")

avatar.png

2 years ago

avatar.png

2 years ago

从命令行(注意大写'V'):

python -V

这在'man python'中有记载 .

avatar.png

2 years ago

几个答案已经建议如何查询当前的python版本 . 要以编程方式检查版本要求,我将使用以下两种方法之一:

# Method 1: (see krawyoti's answer)

import sys

assert(sys.version_info >= (2,6))

# Method 2:

import platform

from distutils.version import StrictVersion

assert(StrictVersion(platform.python_version()) >= "2.6")

avatar.png

2 years ago

你最好的选择可能是这样的:

>>> import sys

>>> sys.version_info

(2, 6, 4, 'final', 0)

>>> if not sys.version_info[:2] == (2, 6):

... print "Error, I need python 2.6"

... else:

... from my_module import twoPointSixCode

>>>

此外,您始终可以通过简单的尝试来包装导入,这应该会捕获语法错误 . 而且,对于@ Heikki来说,这段代码将兼容许多旧版本的python:

>>> try:

... from my_module import twoPointSixCode

... except Exception:

... print "can't import, probably because your python is too old!"

>>>

avatar.png

2 years ago

如果你正在使用linux只是给命令 python 输出将是这样的

Python 2.4.3(#1,Jun 11 2009,14:09:37)[GCC 4.1.2 20080704(Red Hat 4.1.2-44)] on linux2输入“help”,“copyright”,“credits”或“许可证”了解更多信息 .

avatar.png

2 years ago

像这样的东西:

#!/usr/bin/env/python

import sys

if sys.version_info<(2,6,0):

sys.stderr.write("You need python 2.6 or later to run this script\n")

exit(1)

在脚本的顶部 .

请注意,根据脚本中的其他内容,比目标更旧的python版本可能无法加载脚本,因此无法报告此错误 . 作为一种变通方法,您可以在脚本中运行上述内容,该脚本使用更现代的代码导入脚本 .

avatar.png

2 years ago

像Seth所说,主脚本可以检查 sys.version_info (但请注意,直到2.0才出现,所以如果你想支持旧版本,你需要检查sys模块的另一个版本属性) .

但是你仍然需要注意不要在文件中使用旧版Python中没有的任何Python语言功能 . 例如,Python 2.5及更高版本允许这样做:

try:

pass

except:

pass

finally:

pass

但是不适用于较旧的Python版本,因为除了OR之外你最终只能匹配try . 因此,为了与旧的Python版本兼容,您需要编写:

try:

try:

pass

except:

pass

finally:

pass

avatar.png

2 years ago

>>> import sys

人类可读:

>>> print(sys.version) # parentheses necessary in python 3.

2.5.2 (r252:60911, Jul 31 2008, 17:28:52)

[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]

进一步处理:

>>> sys.version_info

(2, 5, 2, 'final', 0)

# or

>>> sys.hexversion

34014192

要确保脚本以Python解释器的最低版本要求运行,请将其添加到您的代码中:

assert sys.version_info >= (2, 5)

这会比较主要和次要版本信息 . 根据需要将micro(= 0 , 1 等)甚至releaselevel(= 'alpha' , 'final' 等)添加到元组中 . 但请注意,检查某个功能是否存在,如果没有,则解决方法(或挽救)几乎总是更好 . 有时功能会在较新的版本中消失,被其他版本取代 .

avatar.png

2 years ago

>>> from platform import python_version

>>> print(python_version())

2.7.8

avatar.png

2 years ago

最简单的方法

只需在终端中键入python,您就可以看到如下所示的版本

desktop:~$ python

Python 2.7.6 (default, Jun 22 2015, 18:00:18)

[GCC 4.8.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>>

avatar.png

2 years ago

我喜欢 sys.hexversion 这样的东西 .

>>> import sys

>>> sys.hexversion

33883376

>>> '%x' % sys.hexversion

'20504f0'

>>> sys.hexversion < 0x02060000

True

avatar.png

2 years ago

这是一个简短的命令行版本,可以直接退出(方便脚本和自动执行):

python -c "print(__import__('sys').version)"

或者只是主要,次要和微观:

python -c "print(__import__('sys').version_info[:1])" # (2,)

python -c "print(__import__('sys').version_info[:2])" # (2, 7)

python -c "print(__import__('sys').version_info[:3])" # (2, 7, 6)

avatar.png

2 years ago

如果你想检测pre-Python 3并且不想导入任何东西......

...你可以(ab)使用列表理解范围更改并在_158353中执行:

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)

avatar.png

2 years ago

import sys

sys.version.split(' ')[0]

sys.version为你提供你想要的东西,只需选择第一个数字:)

avatar.png

2 years ago

检查Python版本: python -V 或 python --version 或 apt-cache policy python

您还可以运行 whereis python 以查看安装了多少个版本 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值