
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 list
python2.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 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