首页 > 解决方案 > 当我尝试通过 python 脚本执行 shell 命令时,出现错误“找不到模块”

问题描述

执行以下语句时

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

生成此错误。

/bin/sh: 模块:找不到命令。

我想使用 python 脚本执行 shell 命令,但上面的语句不起作用,但是当我在 shell 上执行相同的语句时,它工作正常并且不会产生错误。

标签: python-3.xlinuxshellsubprocessenvironment-modules

解决方案


module不是外部命令,而是在使用的 shell/脚本语言中定义的函数。因此,要在 Python 脚本中启用该module命令,您需要使用以下代码对其进行初始化:

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

/usr/share/Modules/init,替换python.py为您的机器上安装脚本(来自 environment-modules 软件)的位置。

初始化后,您可以module从脚本中调用该函数:

module('load', 'modulefile')

推荐阅读