Мне нужно отправить работу Python на сервер. Пока он работает, мне нужно загружать и выгружать модули во время работы, поскольку он вызывает несколько программ, каждая из которых имеет различные зависимости, которые конфликтуют, то есть gcc и intel.
Этот вопрос задавался ранее, но ответы в этой ситуации мне не помогли
Загрузка модулей среды в скрипте Python
погрузо-среда-модули-в-питон-скрипт
Я пытался использовать
import subprocess as sub
cmd = 'module load intel/2016.4'
p = sub.Popen(cmd, shell=True, stderr = sub.STDOUT, stdout = sub.PIPE).communicate()[0]
print(p.decode()) # this simply outputs to screen
И на выходе говорится, что модули были переключены.
Lmod is automatically replacing "gcc/5.4.0" with "intel/2016.4".
Due to MODULEPATH changes, the following have been reloaded:
1) openmpi/2.1.1
Однако, когда я делаю «список модулей» с терминала, модули не переключались. gcc/5.4.0
все еще загружен. Также программа, требующая intel/2016.4
, не запускается. Например, позже я хочу иметь возможность использовать версию gromacs, которая требует intel/2016.4
, и она не работает.
Я немного сбит с толку, поскольку думал, что могу использовать команды bash через Popen, а 'загрузка модуля' - это команда bash. Я не хочу писать сценарий bash для этого, в моем сценарии есть много других вещей, которые гораздо удобнее делать с python, чем bash.