我发现使用tclsh使用"package“语句无法找到itk和iwidget包。这是在Centos 7.9上。但是,从下面的yum/dnf输出中可以看到,这两个包都已安装。造成这一问题的原因是什么,更重要的是什么是解决办法。
% tclsh
% package require Tk
8.6.12
% package require Itcl
4.2.2
% package require Itk
can't find package Itk
% package require Iwidgets
can't find package Iwidgets
% exit
(pymatgen) :/data>dnf list installed "itk-devel*"
Installed Packages
itk-devel.x86_64 3.4- 9.el7 @System
(pymatgen) :/data>dnf list installed "iwidgets*"
Installed Packages
iwidgets.noarch 4.0.2-9.el7 @System编辑"rpm -ql iwidgets grep pkgIndex“的结果是:/usr/pkgIndex/tcl8.5/iwidgets4.0.2/pkgIndex.tcl
虽然:~>tclsh %包需要Iwidgets联接[lsort -dictionary包名]\n无法找到包Iwidget% exit
这是$auto_path结果和包列表。
(base) :~>rpm -ql iwidgets | grep pkgIndex
/usr/share/tcl8.5/iwidgets4.0.2/pkgIndex.tcl
(base) :~>tclsh
% puts $auto_path
/data/miniconda/lib/tcl8.6 /data/miniconda/lib
% exit
% package require Iwidgets
join [lsort -dictionary [package names]] \ncan't find package Iwidgets
%
http
Itcl
itcl
msgcat
opt
platform
sqlite3
Tcl
tcl::tommath
TclOO
tclreadline
tcltest
tdbc
tdbc::mysql
tdbc::odbc
tdbc::postgres
Thread
Tk
Ttrace
zlib
% 发布于 2022-04-14 15:08:00
我不容易访问CentOS系统,但您可以使用以下命令进行调查:
查找iwidget包的pkgIndex.tcl文件:rpm -ql iwidgets | grep pkgIndex
然后在tclsh中,检查auto_path变量:puts $auto_path中是否列出了父目录。
您还可以检查可用的包。也许Iwidgets只能作为"iwidgets“使用。同样,在tclsh运行中:
package require Iwidgets
join [lsort -dictionary [package names]] \n注意:您必须先做一个package require,这样Tcl才能扫描磁盘上的可用包。
更新:在您提供了$auto_path的值之后,您似乎没有使用标准的CentOS tclsh,但是可能使用了miniconda附带的tclsh。您可以向which tclsh查询。
我怀疑如果您运行/usr/bin/tclsh,可以找到包。除非miniconda包替换了/usr/bin/tclsh,否则这将是错误的。
https://stackoverflow.com/questions/71868661
复制相似问题