我使用import tkinter
来执行Tcl
脚本。
如:
import tkinter
runTCL = tkinter.Tk()
runTCL.tk.eval('puts [info tclversion]')

我的Tcl
中安装的默认Python3.5
lib是Tcl8.6
。
我打算做的是访问IXIA并通过脚本自动配置它。
问题是我的IXIA(IxOS4.10
)提供的 API 只能由Tcl8.4
lib访问,新版本是不可接受的。
我知道在类似Unix的系统中使用./configure --with-tcltk-libs
等等可能很容易。
但是如果我Python3.5
机器上Tcl8.4
,我怎么能用import tkinter
lib重新构建我的Windows-64bit
?
提前致谢。
答案 0 :(得分:1)
最简单的方法可能是运行代码以subprocess的形式访问IXIA,这样它就可以使用Tcl 8.4而不会破坏Python使用的版本(这将产生很多其他后果)。现在不再支持所有的Tcl 8.4,但最新版本的Tcl是8.4.20,并且仅在几年前推出,因此它与当前的构建系统基本兼容。 (您可以从SourceForge获取8.4.20源代码。)
当您构建Tcl时,假设您的目标是Unix,您可以使用--prefix=
选项来配置它将安装到configure
;默认位置为/usr/local
(例如,tclsh8.4
二进制文件位于/usr/local/bin
,支持库位于/usr/local/lib
,文档位于/usr/local/man
,...) 。如果您想在其他地方使用Tcl包,可以使用TCLLIBPATH
环境变量来说明它们的位置。此外,如果您作为子进程运行,您可能希望调整标准输出上使用的缓冲级别:
# The default with terminals is line. The default with pipes is full.
fconfigure stdout -buffering line
通常,您可能会在Python代码中替换runTCL.tk.eval
来打印代码以运行到子流程管道并读回结果。需要做一些工作才能使工作变得整洁,但是在这里已经讨论过其他问题。唯一的主要复杂因素是您正在使用不受支持的子进程代码版本。