无法在Python中添加或应用用户定义的TCL包

时间:2013-01-11 16:05:18

标签: python tcl

当我通过以下脚本通过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无法识别包!

1 个答案:

答案 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用来定位包的一种方式。