环境模块:无法初始化 TCL

环境模块:无法初始化 TCL

我正在尝试在 CentOS 6 集群上创建 python-2.7.10 模块。我的简单python-2.7.10模块文件是:

#%Module1.0
prepend-path PATH /gpfs0/export/opt/anaconda-2.3.0/bin 
prepend-path MANPATH /gpfs0/export/opt/anaconda-2.3.0/share
prepend-path LD_LIBRARY_PATH /gpfs0/export/opt/anaconda-2.3.0/lib
set-alias python /gpfs0/export/opt/anaconda-2.3.0/bin/python
set-alias python2.7 /gpfs0/export/opt/anaconda-2.3.0/bin/python

当我加载模块时,例如

module load python-2.7.10 

python2.7 运行良好。但是,如果我尝试module listmodule availmodule unload python-2.7.10

我得到了错误

init.c(556):ERROR:161: Cannot initialize TCL

但是,如果我尝试我的octave-4.0.0模块:

#%Module1.0
prepend-path PATH /gpfs0/export/opt/octave-4.0.0/bin 
prepend-path MANPATH /gpfs0/export/opt/octave-4.0.0/share
prepend-path LD_LIBRARY_PATH /gpfs0/export/opt/octave-4.0.0/lib
set-alias octave /gpfs0/export/opt/octave-4.0.0/bin/octave-4.0.0 
set-alias octave-gui /gpfs0/export/opt/octave-4.0.0/bin/octave-4.0.0 
set-alias octave-cli /gpfs0/export/opt/octave-4.0.0/bin/octave-cli-4.0.0

我可以module listmodule avail而且module unload octave-4.0.0很好。显然,我的python-2.7.10模块出了问题。我该如何修复?

答案1

显然,设置 LD_LIBRARY_PATH 是错误的,正如讨论的那样这里这里这里。所以我改变了我的邪恶方式并且没有设置LD_LIBRARY_PATH并且我的问题得到了解决。

编辑:事实证明,这个问题的根源在于系统/usr/lib64/libtcl8.5.so与 anaconda 的之间的差异/gpfs0/export/opt/anaconda-2.3.0/lib/libtcl8.5.so。Anaconda 的 tcl 库与 Modules 包不兼容。解决方案保持不变,但如果您需要 anaconda 库,则需要根据具体情况进行处理。

答案2

我遇到了同样的问题,使用下面链接中的建议,我能够在不取消设置 LD_LIBRARY_PATH 的情况下解决问题。基本上,您禁用 modulecmd 使用 LD_LIBRARY_PATH 执行的能力;但是,此更改不会阻止 modulecmd 修改 LD_LIBRARY_PATH 变量。使用的命令是:chown nobody:nobody modulecmd chmod ug+s modulecmd

https://sourceforge.net/p/modules/mailman/message/27952351/

相关内容