在Tcl脚本中查找python版本

时间:2019-04-18 10:49:18

标签: tcl

是否可以在.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()

2 个答案:

答案 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上都可以使用