在python脚本中加载环境模块

mar*_*ard 21 python module environment-variables environment-modules

有没有办法让python脚本加载和使用环境模块os.system('module load xxx')因为它在子shell中执行它们不起作用(至少,我认为这是正在发生的事情).

jne*_*man 19

我知道这个问题有点陈旧,但它仍然足够重要,我正在寻找答案,所以我发布了我发现的也有效:

至少在3.2.9以上的源代码中,你可以包含python"init"文件来获取模块的python函数版本:

>>> exec(open('/usr/local/Modules/default/init/python.py').read())
>>> module('list')
No Modulefiles Currently Loaded.
>>> module('load','foo')
>>> module('list')
Currently Loaded Modulefiles:
  1) foo/1.0
Run Code Online (Sandbox Code Playgroud)

我被告知早期版本可以在没有.py扩展名的情况下做同样的事情,但那是秒针,所以ymmv.

替代"init"文件位置(来自@lib的评论): /usr/share/Modules/init/python.py

  • 在我使用它的服务器中是/usr/share/Modules/init/python.py.我发现路径正在运行模块--version(正确的条目似乎是MODULES_INIT_DIR) (6认同)
  • 得到它了.使用`exec(open(filename).read())`为我工作. (2认同)