如何检查哪个版本的Python解释器正在运行我的脚本?
当前回答
就像Seth说的,主脚本可以检查sys。Version_info(但请注意,它直到2.0才出现,所以如果你想支持旧版本,你需要检查sys模块的另一个version属性)。
但是,您仍然需要注意不要在文件中使用旧版本Python中没有的任何Python语言特性。例如,这在Python 2.5及更高版本中是允许的:
try:
pass
except:
pass
finally:
pass
但在较旧的Python版本中不能工作,因为只能使用except OR最终匹配try。所以为了与旧版本的Python兼容,你需要写:
try:
try:
pass
except:
pass
finally:
pass
其他回答
下面是一个简短的命令行版本,它可以直接退出(方便脚本和自动执行):
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)
你最好的选择可能是这样的:
>>> 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
>>>
此外,您总是可以在一个简单的try中包装导入,这应该会捕获语法错误。而且,按照@Heikki的观点,这段代码将与更老版本的python兼容:
>>> try:
... from my_module import twoPointSixCode
... except Exception:
... print "can't import, probably because your python is too old!"
>>>
import sys
sys.version.split(' ')[0]
sys。版本给你你想要的,只是选择第一个数字:)
from sys import version_info, api_version, version, hexversion
print(f"sys.version: {version}")
print(f"sys.api_version: {api_version}")
print(f"sys.version_info: {version_info}")
print(f"sys.hexversion: {hexversion}")
输出
sys。版本:3.6.5 (v3.6.5:f59c0932b4, march 28 2018, 17:00:18) [MSC .1900 64位(AMD64)] sys。api_version: 1013 sys。version_info: sys。Version_info (major=3, minor=6, micro=5, releaslevel ='final', serial=0) sys。hexversion: 50726384
从命令行(注意大写的“V”):
python -V
这在“man python”中有记录。
从IPython控制台
!python -V
推荐文章
- 有没有办法在python中做HTTP PUT
- “foo Is None”和“foo == None”之间有什么区别吗?
- 类没有对象成员
- Django模型“没有显式声明app_label”
- 熊猫能自动从CSV文件中读取日期吗?
- 在python中zip的逆函数是什么?
- 有效的方法应用多个过滤器的熊猫数据框架或系列
- 如何检索插入id后插入行在SQLite使用Python?
- 我如何在Django中添加一个CharField占位符?
- 如何在Python中获取当前执行文件的路径?
- 我如何得到“id”后插入到MySQL数据库与Python?
- super()失败,错误:TypeError "参数1必须是类型,而不是classobj"当父不继承对象
- Python内存泄漏
- 实现嵌套字典的最佳方法是什么?
- 如何在tensorflow中获得当前可用的gpu ?