Module 如何在Tcl中的源文件中使用exec语句
我试图在另一个源文件中使用以下命令,但该变量似乎没有用处。PYTHONPATH变量由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
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
}]