我需要在HPC集群中执行Python脚本。不幸的是,默认的python版本仅为2.6.6,并且没有numpy和scipy。
我可以在命令行中加载这些模块。
#module load /home/hw1u16/modules/2.7.3和
module load /home/hw1u16/modules/1.6.2但是,当我像这样编写bash脚本时
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'我不知道怎么回事,有人能帮我吗?
发布于 2019-12-05 21:11:07
我遇到了一个类似的问题,并找到了两个解决方案:
sh yourscript.sh或./yourscript.sh运行脚本不同,您可以以. yourscript.sh的形式运行它--这将正确地获取模块并运行脚本. yourscript.sh,您可以像戴维C的答案中所指出的那样,将您的shebang从#!/bin/sh修改为#!/bin/bash,并以./yourscript.sh的形式运行您的脚本,注意,以sh yourscript.sh的形式运行它是行不通的发布于 2017-07-20 20:32:36
好吧,我想我知道问题出在哪里了。从shell中尝试type module,看看module当前是如何在系统中定义的。您将收到两个选项:要么是别名,要么是函数。这是因为module命令是alias或shell function。
假设您的脚本是以下running.sh:
#!/bin/bash
module load python/2.7.3
python /home/hw1u16/project/trainAgent.py(添加shebang是一个好做法)
要解决这个问题,您有两个选项:
source的场景。换句话说,do:source running.sh。这与将module命令直接输入交互式shell完全相同。但是,通过执行./running.sh,您将运行一个新的、非交互式的shell。它们通常没有设置标准别名和shell函数。
查找定义module命令的初始化脚本,并从脚本中对其进行source
https://stackoverflow.com/questions/45224536
复制相似问题