Я получаю сообщение об ошибке "модуль не найден" при попытке выполнить команды оболочки через сценарий python - PullRequest
0 голосов
/ 13 апреля 2020

Когда приведенный ниже оператор выполняется

out1 = subprocess.run("module load python",shell = True, stdout = subprocess.PIPE , stderr = subprocess.STDOUT)

Эта ошибка генерируется.

/ bin / sh: модуль: команда не найдена .

Я хочу выполнить команды оболочки, используя скрипт python, и этот оператор выше не работает, но когда я выполняю тот же оператор в оболочке, он работает нормально, и не генерируется никаких ошибок. .

1 Ответ

1 голос
/ 15 апреля 2020

module - это не внешняя команда, а функция, определяемая на используемом языке оболочки / скрипта. Таким образом, чтобы включить команду module в скрипте Python, вам нужно инициализировать ее следующим кодом:

import os
exec(open('/usr/share/Modules/init/python.py').read())

Заменить /usr/share/Modules/init тем местом, где скрипт python.py (из программное обеспечение модулей среды) установлено на вашем компьютере.

После инициализации вы можете вызвать функцию module из вашего скрипта:

module('load', 'modulefile')
...