Module 如何在Tcl中的源文件中使用exec语句

Module 如何在Tcl中的源文件中使用exec语句,module,tcl,Module,Tcl,我试图在另一个源文件中使用以下命令,但该变量似乎没有用处。PYTHONPATH变量由lib//site packages填充,而不是lib/python2.7/site packages 我的路径: set pyver [ exec python -c {import sys;print 'python%d.%d'%(sys.version_info[0],sys.version_info[1])} ]enter code here array set paths { PATH

我试图在另一个源文件中使用以下命令,但该变量似乎没有用处。PYTHONPATH变量由
lib//site packages
填充,而不是
lib/python2.7/site packages

我的路径:

set pyver      [ exec python -c {import sys;print 'python%d.%d'%(sys.version_info[0],sys.version_info[1])} ]enter code here
array set paths {
PATH               bin
PYTHONPATH         lib/$pyver/site-packages
}
主要内容:


如果按如下方式初始化数组
路径

array set paths {
    PATH               bin
    PYTHONPATH         lib/$pyver/site-packages
}
成员初始化周围的大括号防止变量替换变量
pyver
。要允许替换变量,您需要用双引号替换大括号(这有点糟糕),或者将其写成

array set paths [list \
    PATH               bin \
    PYTHONPATH         lib/$pyver/site-packages \
]
或(分别设置每个成员)

或(强制替代)


文档:,

这是您实际使用的代码吗?大括号应防止变量替换,并为您提供值
lib/$pyver/site packages
。您是否验证了
pyver
的值是多少?@Hoodiecrow如何使
$pyver
被其值替换?在这种情况下,我强烈建议单独执行这些操作。
array set paths [list \
    PATH               bin \
    PYTHONPATH         lib/$pyver/site-packages \
]
set paths(PATH)       bin
set paths(PYTHONPATH) lib/$pyver/site-packages
array set paths [subst {
    PATH               bin
    PYTHONPATH         lib/$pyver/site-packages
}]