首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux脚本中的模块加载命令

linux脚本中的模块加载命令
EN

Stack Overflow用户
提问于 2017-07-20 20:24:01
回答 2查看 30.5K关注 0票数 4

我需要在HPC集群中执行Python脚本。不幸的是,默认的python版本仅为2.6.6,并且没有numpy和scipy。

我可以在命令行中加载这些模块。

代码语言:javascript
复制
#module load /home/hw1u16/modules/2.7.3

代码语言:javascript
复制
module load /home/hw1u16/modules/1.6.2

但是,当我像这样编写bash脚本时

代码语言:javascript
复制
module load /home/hw1u16/modules/2.7.3
module load /home/hw1u16/modules/1.6.2
python /home/hw1u16/project/trainAgent.py

它警告我

ModuleCmd_Load.c(200):ERROR:105: Unable to locate a modulefile for '/home/hw1u16/modules' ModuleCmd_Load.c(200):ERROR:105: Unable to locate a modulefile for '/home/hw1u16/modules'我不知道怎么回事,有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2019-12-05 21:11:07

我遇到了一个类似的问题,并找到了两个解决方案:

  1. 与使用sh yourscript.sh./yourscript.sh运行脚本不同,您可以以. yourscript.sh的形式运行它--这将正确地获取模块并运行脚本
  2. 如果您不想使用. yourscript.sh,您可以像戴维C的答案中所指出的那样,将您的shebang从#!/bin/sh修改为#!/bin/bash,并以./yourscript.sh的形式运行您的脚本,注意,以sh yourscript.sh的形式运行它是行不通的
票数 7
EN

Stack Overflow用户

发布于 2017-07-20 20:32:36

好吧,我想我知道问题出在哪里了。从shell中尝试type module,看看module当前是如何在系统中定义的。您将收到两个选项:要么是别名,要么是函数。这是因为module命令是aliasshell function

假设您的脚本是以下running.sh

代码语言:javascript
复制
#!/bin/bash  
module load python/2.7.3
python /home/hw1u16/project/trainAgent.py

(添加shebang是一个好做法)

要解决这个问题,您有两个选项:

  • 备选案文1:

source的场景。换句话说,do:source running.sh。这与将module命令直接输入交互式shell完全相同。但是,通过执行./running.sh,您将运行一个新的、非交互式的shell。它们通常没有设置标准别名和shell函数。

  • 备选案文2:

查找定义module命令的初始化脚本,并从脚本中对其进行source

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45224536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档