当我通过以下脚本通过python运行TCL时,我有一个需要用户定义的包的TCL脚本:
import subprocess
p = subprocess.Popen(
"tclsh tcltest.tcl",
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
print stdout
print stderr
返回以下错误:
can't find package __teapot__
while executing
"package require __teapot__"
TCL在tclsh环境下工作! 我相信我的设置中有些错误,python无法识别包!
答案 0 :(得分:0)
我想知道环境变量是否未明确传递。怎么样:
import subprocess
import os
p = subprocess.Popen(
"tclsh tcltest.tcl",
env=os.environ,
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
print stdout
print stderr
由于这没有任何不同,请将以下行添加到 tcltest.tcl 文件的第一行并比较输出:
puts ">>$auto_path<<"
我怀疑auto_path
变量在两种情况之间是不同的。这个变量是Tcl用来定位包的一种方式。