【问题标题】:I'm getting an error "module not found " when I'm trying to execute shell commands through a python script当我尝试通过 python 脚本执行 shell 命令时,出现错误“找不到模块”
【发布时间】:2020-07-25 16:41:00
【问题描述】:

当下面的语句被执行时

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

产生了这个错误。

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

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

【问题讨论】:

  • 由于 module 不是 POSIX shell 的有效内部命令(这是您在此处运行的),因此在您的 PATH 中搜索名称为 module 的可执行文件,但显然没有。因此出现错误消息。
  • 那么我应该怎么做才能使命令正常工作?
  • 将名为 module 的可执行文件所在的目录放入 PATH 中。

标签: python-3.x linux shell subprocess environment-modules


【解决方案1】:

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

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

/usr/share/Modules/init 替换为您机器上安装python.py 脚本(来自环境模块软件)的位置。

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

module('load', 'modulefile')

【讨论】:

    猜你喜欢
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多