gpt4 book ai didi

python - 我需要在 python 中运行 TCL 脚本,我的 TCL 脚本还有一个用户定义的(内部)包

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:23 25 4
gpt4 key购买 nike

我需要在 python 中运行 TCL 脚本,我的 TCL 脚本还有一个用户定义的(内部)包我尝试了这些脚本:

1.

import Tkinter
import socket

def TCLRun():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5006))
root = Tkinter.Tk()
## root.tk.eval('package require XXX')
tcl_script ="""
package require XXX
set YYY [COMMAND FROM PACKAGE]
puts $YYY
} """
# call the Tkinter tcl interpreter
root.tk.call('eval', tcl_script)
root.mainloop()

出现此错误:

import TCLCall
>>> TCLCall.TCLRun()

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
TCLCall.TCLRun()
File "C:\Users\XXX\Desktop\PKT\TCLCall.py", line 24, in TCLRun
root.tk.call('eval', tcl_script)
TclError: can not find channel named "stdout"

并且,

2.

import Tkinter
root=Tkinter.Tk()
root.tk.eval('package require XXX')
root.tk.eval('set YYY COMMAND')

返回有关 sdtout 的错误!

其他:

3.

 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__"

它们都不起作用,请帮我解决这个问题!

我可以使用一些命令通过以下代码在我们的产品上进行操作:

import socket
import time

def Sckt():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5006))

s.send('0 COMMAND \r\n')

这会给你一些想法!

谢谢

最佳答案

对于不属于供应商安装一部分的自定义软件包,您需要指示 Tcl 从何处搜索它。为此,请将包含包的目录的目录附加到Tcl的全局auto_path变量中。例如,如果 XXX 包位于目录 /home/amir/.tclpackages/XXX1.0 中,那么您的脚本将执行以下操作:

lappend auto_path /home/amir/.tclpackages

这可以位于 Tcl 脚本中 package require XXX 之前的任何位置。 (好吧,你可以把它放在后面,但是package require会失败......)

关于python - 我需要在 python 中运行 TCL 脚本,我的 TCL 脚本还有一个用户定义的(内部)包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com