在Tcl脚本中查找python版本
是否可以在.tcl脚本中找到安装的python版本?换句话说,如何从.tcl脚本判断默认路径中的python版本 没有包含关于此的有用信息 目前,我正在调用一个python脚本,该脚本打印sys.version并解析其输出 .py在Tcl脚本中查找python版本,tcl,Tcl,是否可以在.tcl脚本中找到安装的python版本?换句话说,如何从.tcl脚本判断默认路径中的python版本 没有包含关于此的有用信息 目前,我正在调用一个python脚本,该脚本打印sys.version并解析其输出 .py import sys def find_version(): version = sys.version version = version.split()[0].split('.') version = version[0] + '.' +
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()
.tcl
set file "C://find_python_version.py"
set output [exec python $file]
一种非常简单的方法似乎是解析
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
在我看来还可以。一种足够简单的方法似乎是解析
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
我觉得还可以。我会使用Python的
sys.version\u info
,因为我可以用我喜欢的任何方式格式化版本字符串:
set pythonVersion [exec python -c {import sys; print("%d.%d.%d" % sys.version_info[:3])}]
puts "Python version: $pythonVersion"
输出:
Python版本:2.7.15
几点注意:
- 在
标志后面的Python脚本(用大括号括起来)将以x.y.z的形式打印出版本,您可以按自己喜欢的方式对其进行格式化-c
的值是许多元素的列表,请参阅文档。我只对前3个元素感兴趣,因此sys.version\u info
sys.version\u info[:3]
- 带括号的
语句/函数将同时适用于Python 2和Python 3print
sys.version\u info
,因为我可以用我喜欢的任何方式格式化版本字符串:
set pythonVersion [exec python -c {import sys; print("%d.%d.%d" % sys.version_info[:3])}]
puts "Python version: $pythonVersion"
输出:
Python版本:2.7.15
几点注意:
- 在
标志后面的Python脚本(用大括号括起来)将以x.y.z的形式打印出版本,您可以按自己喜欢的方式对其进行格式化-c
的值是许多元素的列表,请参阅文档。我只对前3个元素感兴趣,因此sys.version\u info
sys.version\u info[:3]
- 带括号的
语句/函数将同时适用于Python 2和Python 3print
sys.version
并解析其输出。我想知道是否有更好的方法。@TonyTannous try:set output[exec python--version]
解析“python-v”的输出有什么问题?@stolenmoment目前我正在调用一个python脚本,该脚本打印sys.version
,并解析其输出。我想知道是否有更好的方法。@TonyTannous try:设置输出[exec python--version]
作为奖励,它不需要帮助程序python脚本。一个问题是,目前我使用{“3.6”}
初始化列表,如何将3.6.8
转换为相同的类型?因为追加3.6.8
会导致脚本稍后崩溃…@TonyTannous您可以使用一个简单的正则表达式,比如regexp-inline{^\d+\.\d+}[pythonVersion]
可能是一个额外的好处,它不需要帮助程序Python脚本如何将3.6.8
转换为相同类型?因为追加3.6.8
会导致脚本稍后崩溃…@TonyTannous您可以使用一个简单的正则表达式,比如regexp-inline{^\d+\.\d+}[pythonVersion]