如何检查哪个版本的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'
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录