qsub和python,导入.py模块但返回.pyf的ImportError

时间:2013-11-21 20:17:59

标签: python module importerror qsub

我正在尝试通过qsub myScript.sh -cwd提交作业,其中shell脚本运行Python-2.7脚本myPython.py

    # myScript.sh
    python2.7 myPython.py

现在,myPython.py需要导入存储在我的本地目录中的Python包,因此脚本以

开头
    # myPython.py
    import sys
    sys.path.append('/file/path/for/package')
    import package

提交作业后,日志文件包含Python的以下输出:

    ImportError: No module named problem_c

*.py文件导入多个模块而不返回错误后会发生此错误,因此我相当确定这不是路径问题。我找到的唯一区别是problem_c文件以.pyf结尾(即problem_c.pyf)。它存储在与.py结尾的模块相同的目录中。

当我在本地运行脚本时,如python2.7 myPython.py,当包加载时不会发生此错误。但是,如果不将其提交到队列,则该作业的内存密集程度太高而无法完成。当我使用.pyf时,为什么写成qsub文件的模块被区别对待,在这种情况下如何导入它们?

(如果重要的话,我正在处理的集群是使用Sun Grid Engine设置的。)

感谢您的想法。

2 个答案:

答案 0 :(得分:0)

或者f2py。很明显,您没有在群集中添加模块。

答案 1 :(得分:0)

以下是您可以导入带有路径的模块的方法:

import imp
module_name = imp.load_source('module_name', '/abs/path/to/module/module_name.py')

# usage
module_name.function()