如何检查正在解释脚本的版本的Python Interpreter?


#1楼

sys模块的sys.version字符串中提供了此信息:

>>> 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)

这将比较主要版本和次要版本信息。 添加微(= 01 ,等等),甚至releaselevel(= 'alpha''final'等),以该元组作为你喜欢。 但是请注意,最好总是“躲避”检查某个功能是否存在,如果没有,请采取变通方法(或纾困)。 有时,某些功能在较新的版本中会消失,而被其他功能取代。


#2楼

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

sys.version提供您想要的,只需选择第一个数字即可:)


#3楼

如果您在linux上工作,只需给出命令python输出将如下所示

Python 2.4.3(#1,Jun 11 2009,14:09:37)

linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-44)]

键入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。


#4楼

在命令行中(注意大写的“ V”):

python -V

这在'man python'中有记录。


#5楼

使用来自stdlib的platformpython_version

>>> from platform import python_version
>>> print(python_version())
2.7.8

#6楼

这是一个简短的命令行版本,可以立即退出(对于脚本和自动执行非常方便):

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)

#7楼

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

>>> 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!"
>>>

#8楼

放入类似:

#!/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甚至可能无法加载该脚本,因此将不足以报告此错误。 解决方法是,您可以在脚本中运行以上命令,该脚本将使用更现代的代码导入该脚本。


#9楼

就像Seth所说的那样,主脚本可以检查sys.version_info (但要注意,该脚本直到2.0才出现,因此,如果要支持旧版本,则需要检查sys模块的另一个版本属性)。

但是,您仍然需要注意不要使用该文件中的任何Python语言功能,这些功能在较早的Python版本中不可用。 例如,在Python 2.5和更高版本中允许这样做:

try:pass
except:pass
finally:pass

但在较旧的Python版本中将无法使用,因为您只能使用OR或最终与try匹配。 因此,为了与旧版本的Python兼容,您需要编写:

try:try:passexcept:pass
finally:pass

#10楼

我喜欢sys.hexversion的东西。

http://docs.python.org/library/sys.html#sys.hexversion

>>> import sys
>>> sys.hexversion
33883376
>>> '%x' % sys.hexversion
'20504f0'
>>> sys.hexversion < 0x02060000
True

#11楼

最简单的方法

只需在终端中键入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.
>>>

#12楼

使用six模块,您可以通过以下方法实现:

import sixif six.PY2:# this is python2.x
else:# six.PY3# this is python3.x

#13楼

一些答案已经建议如何查询当前的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")

#14楼

只是为了好玩,下面是在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 modulecheck_sys = 1if not check_sys:if hasattr(platform, "python_version"):via_platform = 1else:check_sys = 1if check_sys:try:import systest_sys = 1except (ImportError, NameError):# just let via_sys_version_info and via_sys_version remain False - we have no sys modulepassif test_sys:if hasattr(sys, "version_info"):via_sys_version_info = 1elif hasattr(sys, "version"):via_sys_version = 1else:# just let via_sys remain Falsepassif 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.versionversion_list = string.split(verbose_version)print(version_list[0])
else:print("unknown")

#15楼

检查Python版本: python -Vpython --versionapt-cache policy python

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


#16楼

从3.7开始, sys.version_info似乎没有返回tuple 。 相反,它返回一个特殊的类,因此至少对于我来说,所有使用元组的示例都不起作用。 这是python控制台的输出:

>>> import sys
>>> type(sys.version_info)
<class 'sys.version_info'>

我发现结合使用sys.version_info.majorsys.version_info.minor似乎足够了。 例如,...

import sys
if sys.version_info.major > 3:print('Upgrade to Python 3')exit(1)

检查您是否正在运行Python3。您甚至可以使用...检查更特定的版本。

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。


#17楼

如果您想检测Python 3之前的版本并且不想导入任何东西...

...您可以(ab)使用列表理解范围的更改,并在单个表达式中完成

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

#18楼

要在Windows上验证Python版本的命令,请在命令提示符下运行以下命令并验证输出

c:\>python -V
Python 2.7.16c:\>py -2 -V
Python 2.7.16c:\>py -3 -V
Python 3.7.3

另外,要查看每个Python版本的文件夹配置,请运行以下命令:

For Python 2,'py -2 -m site'
For Python 3,'py -3 -m site'

#19楼

from sys import version_info, api_version, version, hexversionprint(f"sys.version: {version}")
print(f"sys.api_version: {api_version}")
print(f"sys.version_info: {version_info}")
print(f"sys.hexversion: {hexversion}")

输出

 sys.version: 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] sys.api_version: 1013 sys.version_info: sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0) sys.hexversion: 50726384 

如何检查正在运行脚本的Python版本?相关推荐

  1. 指定版本的python运行和指定python版本的pip

    1. pip在指定Python版本下安装 pip install -t D:\python3.5(32bit)\Lib\site-packages -i https://pypi.douban.com ...

  2. linux运行脚本文件python,Python脚本:Linux自动化执行Python脚本

    1.环境及其工具: ubuntu 16.04 python2.7(自带) pip2.7(安装) virtualenv(安装) crontab (自带) 2.pip2.7安装 (1)尝试使用 sudo ...

  3. 怎么查看自己安装的python版本_教你如何检查 Python 版本

    本教程介绍如何使用 命令行检查操作系统上安装的 Python 版本.这在安装用 Python 编写的需要特定版本 Python 的应用程序时非常有用. Python 是世界上最流行的编程语言之一.它用 ...

  4. 查看python版本-教你如何检查 Python 版本

    本教程介绍如何使用 命令行检查操作系统上安装的 Python 版本.这在安装用 Python 编写的需要特定版本 Python 的应用程序时非常有用. Python 是世界上最流行的编程语言之一.它用 ...

  5. linux查看python版本-教你如何检查 Python 版本

    导读 本教程介绍如何使用命令行检查操作系统上安装的 Python 版本.这在安装用 Python 编写的需要特定版本 Python 的应用程序时非常有用. Python 是世界上最流行的编程语言之一. ...

  6. [Python]查看Python版本

    原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:https://blog.csdn.net/humanking7/article/details/96601144 文章目录 @[toc] ...

  7. 检查python版本命令是_检查Python版本

    目的 以下文章将为您提供有关如何在操作系统上检查Python版本的信息. 困难 简单 约定 #-要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo命令 $-要 ...

  8. Python实现简单自动升级exe程序版本并自动运行,适合Python自动化运维。

    Python自动升级exe程序版本并自动运行,Python自动更新脚本,适合Python自动化运维. 一.此教程是使用bat脚本+NFS实现自动更新.(也可以使用FTP或者使用html实现自动更新) ...

  9. python 多种运行脚本方式

    python 多种运行脚本方式 文章目录 python 多种运行脚本方式 1. 脚本与模块 2. 什么是 Python 解释器? 3. 如何以交互方式运行 Python 代码 4. 解释器如何运行 P ...

最新文章

  1. python+opencv Canny边缘检测
  2. arm中的.a文件如何产生的_可变文件系统:如何在IPFS中处理文件?
  3. iOS APP网络分析之rvictl(可以捕捉除了Wifi以外的网络类型)
  4. 单线多拨插件安装_Rhino 中的 SU 插件 | Jamparc for Rhino 6
  5. MariaDB安装、卸载以及相关设置(Linux服务器Mysql部署)
  6. 【Android】再来一篇Fragment懒加载(只加载一次哦)
  7. airflow部署和使用示例
  8. Zookeeper的Leader选举
  9. 学习:大文件统计与排序
  10. imx 290 支持25fps
  11. win10电脑时间同步设置方法
  12. vue @click.native和@click.stop和@click.self
  13. 服务器常见协议,网吧影视服务器常见的网络协议
  14. 带peano余项的泰勒公式
  15. PDF格式分析(五十九) Color Spaces 颜色空间
  16. 自动脚本以及打包,将写好的脚本打包成exe可执行文件
  17. MariaDB glare cluster简介
  18. 谷歌应用商店现木马程序、百万WiFi路由器面临漏洞风险|12月6日全球网络安全热点
  19. #读写文件 EX15-17
  20. 芯洲科技SCT2450Q完全替代TPS54540,车规级芯片

热门文章

  1. 正则表达式-验证带千分号的,带任意位小数的数字类型
  2. 免费素材下载:200个超棒的矢量图标下载
  3. vlan之间Hybrid端口配置
  4. aop日志(记录方法调用日志)
  5. 第九届全国大学生数学竞赛(江西赛区)数学类获奖学生名单
  6. Java中的Swing键盘绑定案例
  7. mysql 表中中文不显示
  8. c++ builder xe2 字符串转日期
  9. POJ1979(DFS)
  10. 开车十几年了,一些心得和大家分享、探讨