
Estou tentando criar um módulo python-2.7.10 em um cluster CentOS 6. Meu python-2.7.10
arquivo de módulo simples é:
#%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
Quando carrego o módulo, por exemplo
module load python-2.7.10
python2.7 funciona bem. No entanto, se eu tentar module list
ou module avail
oumodule unload python-2.7.10
eu recebo o erro
init.c(556):ERROR:161: Cannot initialize TCL
No entanto, se eu tentar meu octave-4.0.0
módulo:
#%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
Eu posso module list
, module avail
e module unload octave-4.0.0
muito bem. Claramente, meu python-2.7.10
módulo quebrou alguma coisa. Como faço para corrigir isso?
Responder1
Evidentemente, definir LD_LIBRARY_PATH é inadequado, conforme discutidoaqui,aquieaqui. Então mudei meus maus hábitos e não configurei LD_LIBRARY_PATH e meu problema foi resolvido.
EDITAR: Acontece que a raiz deste problema é uma diferença entre o sistema /usr/lib64/libtcl8.5.so
e o do anaconda /gpfs0/export/opt/anaconda-2.3.0/lib/libtcl8.5.so
. A biblioteca tcl do Anaconda é incompatível com o pacote Modules. A solução permanece a mesma, mas se você precisar das bibliotecas anaconda, precisará lidar com elas caso a caso.
Responder2
Encontrei o mesmo problema e, usando a sugestão do link abaixo, consegui corrigir o problema sem desativar LD_LIBRARY_PATH. Basicamente, você desativa a capacidade do modulecmd de usar LD_LIBRARY_PATH para sua execução; entretanto, essa alteração não impede que modulecmd modifique a variável LD_LIBRARY_PATH. Os comandos usados são: chown ninguém:nobody modulecmd chmod ug+s modulecmd