我在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脚本运行命令时抛出错误有谁知道这里有什么不对吗?
答案 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
是变量,为什么会引用它?