如何检查哪个版本的Python解释器正在运行我的脚本?


当前回答

可以这样写:

#!/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甚至可能无法加载脚本,因此不会报告此错误。作为一种变通方法,您可以在一个脚本中运行上述操作,该脚本导入了更现代的代码。

其他回答

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

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)

要从命令行检查,在一个命令中,但包括major, minor, micro version, releaslevel和serial,然后调用与你的脚本使用的相同的Python解释器(即相同的路径):

> path/to/your/python -c "import sys; print('{}.{}.{}-{}-{}'.format(*sys.version_info))"

3.7.6-final-0

注意:.format()而不是f-strings或'.'.join()允许您使用任意格式和分隔符字符,例如,使其成为一个可greppable的单字字符串。我把它放在bash实用程序脚本中,报告所有重要的版本:python, numpy, pandas, sklearn, MacOS, xcode, clang, brew, conda, anaconda, gcc/g++等。对日志记录、可复制性、故障排除和错误报告等很有用。

该信息可在sys。sys模块中的版本字符串:

>>> 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或sys.hexversion:

>>> 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'等)。然而,请注意,最好是“回避”检查是否有特定的功能,如果没有,就采取变通措施(或退出)。有时,新版本的特性会消失,被其他特性所取代。

我喜欢系统。对于这样的东西。

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

在Windows操作系统下,通过在命令提示符中输入以下命令,验证命令的Python版本

c:\>python -V
Python 2.7.16

c:\>py -2 -V
Python 2.7.16

c:\>py -3 -V
Python 3.7.3

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

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