1

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

4

1 回答 1

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

于 2013-01-11T21:56:28.370 回答