
Я пытаюсь создать модуль python-2.7.10 в кластере CentOS 6. Мой простой 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 list
или 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
. Библиотека tcl anaconda несовместима с пакетом Modules. Решение остается прежним, но если вам нужны библиотеки anaconda, вам нужно обрабатывать их в каждом конкретном случае.
решение2
Я столкнулся с той же проблемой и, воспользовавшись предложением по ссылке ниже, смог исправить ее, не отключая LD_LIBRARY_PATH. По сути, вы отключаете возможность modulecmd использовать LD_LIBRARY_PATH для своего выполнения; однако это изменение не мешает modulecmd изменять переменную LD_LIBRARY_PATH. Используемые команды: chown nobody:nobody modulecmd chmod ug+s modulecmd