環境モジュール: 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 

module listpython2.7は問題なく動作します。しかし、またはmodule availまたはを試みるとmodule 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 list、問題ありません。明らかに、私のモジュールは何かを壊しています。どうすればこれを修正できますか?module availmodule unload octave-4.0.0python-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/

関連情報