是否可以在.tcl脚本中找到安装了哪个python版本?换句话说,如何通过.tcl脚本判断默认路径中的python版本?
Tcl Wiki不包含与此有关的有用信息
当前,我正在调用一个python脚本,该脚本打印sys.version并解析其输出。
.py
input_list = [i for i in input_list if i%2 == 1]
.tcl
import sys
def find_version():
version = sys.version
version = version.split()[0].split('.')
version = version[0] + '.' + version[1]
print(version)
if __name__ == '__main__':
find_version()
答案 0 :(得分:1)
一种足够简单的方法似乎是解析python --version
的结果:
proc pythonVersion {{pythonExecutable "python"}} {
# Tricky point: Python 2.7 writes version info to stderr!
set info [exec $pythonExecutable --version 2>@1]
if {[regexp {^Python ([\d.]+)$} $info --> version]} {
return $version
}
error "failed to parse output of $pythonExecutable --version: '$info'"
}
在此系统上测试:
% pythonVersion
3.6.8
% pythonVersion python2.7
2.7.15
对我很好。
答案 1 :(得分:1)
我将使用Python的sys.version_info
,因为我可以用任何喜欢的方式格式化版本字符串:
set pythonVersion [exec python -c {import sys; print("%d.%d.%d" % sys.version_info[:3])}]
puts "Python version: $pythonVersion"
输出: Python版本:2.7.15
一些注意事项:
-c
标志后面的Python脚本(花括号)将以x.y.z的形式打印出版本,您可以按照自己喜欢的方式对其进行格式化sys.version_info
的值是许多元素的列表,请参见文档。我只对前三个元素感兴趣,因此sys.version_info[:3]
print
语句/函数将在Python 2和Python 3上都可以使用