从python运行时,Tcl 8.5 vs 8.6脚本抛出错误

时间:2014-08-13 23:01:57

标签: python tcl freebsd

我在Freebsd 9.2上的Python脚本引发了错误,而它在Freebsd8.2上运行良好。

test.py

import os
import subprocess
tclsh = '/usr/local/bin/tclsh'
process = subprocess.Popen([tclsh, 'run_tests.tcl'] )

test.tcl

proc sleep {N} {
    after [expr {int($N * 1000)}]
}

puts "--- Initializing----"

引发错误

File "run_tests.tcl", line 1
    proc sleep {N} {
         ^
SyntaxError: invalid syntax

所以如果我改变了python脚本

-tclsh1 = '/usr/local/bin/tclsh'
+tclsh1 = '/usr/local/bin/tclsh8.5'

在Freebsd9.2上运行正常。

但是,如果我在命令行上执行命令,它也能正常工作。

/usr/local/bin/tclsh  test.tcl

使用tbssh1 ='/ usr / local / bin / tclsh'

在Freebsd 9.2上通过python脚本运行命令时抛出错误

有谁知道这里有什么不对吗?

1 个答案:

答案 0 :(得分:2)

Thant是一个python语法错误:

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:38) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> proc sleep {n} {
  File "<stdin>", line 1
    proc sleep {n} {
             ^
SyntaxError: invalid syntax

你确定/ usr / local / bin / tclsh是一个Tcl解释器吗?

这一行看起来很有趣:

process = subprocess.Popen(['tclsh1', 'test.tcl'], bufsize=1, stdout=stdout, cwd=cwd)

如果tclsh1是变量,为什么会引用它?