从没有模块依赖关系的模块导入函数

时间:2017-04-26 09:51:25

标签: python python-module

我想从模块abc.py导入函数foo() 但是,abc.py包含依赖于Python不可用的模块的其他函数(即我无法将它们导入到python解释器中,因为我使用ImageJ将abc.py作为Jython运行)

我找到的一个解决方案是将有问题的导入放在名称 ==" main "检查,例如:

# abc.py
def foo():
    print("Hello, World!")

def run_main_function():
    foo()
    ...other stuff using IJ...

if __name__ == "__main__":
    from ij import IJ
    run_main_function()

所以当我尝试将foo导入另一个脚本def.py时,例如:

# def.py
from abc import foo

def other_func():
    foo()

if __name__ == "__main__":
    other_func()

这很有效。但是当我以正常方式放入导入时,在脚本的顶部,我收到一个错误:没有名为' ij'的模块。我想知道这个问题是否有解决方案?具体来说,我把导入放在脚本的顶部,然后在def.py中我说只导入函数,而没有abc.py的依赖?

2 个答案:

答案 0 :(得分:0)

您不应在.py声明中加入import扩展名。它应该是:

from abc import foo

答案 1 :(得分:0)

  

我想知道这个问题是否有解决方案?具体来说,我把导入放在脚本的顶部,然后在def.py中我说只导入函数,而没有abc.py的依赖?

据我所知,这是python的工作方式。如果总是不可用,你应该将该导入放在使用它的函数中。

def run_main_function():
    from ij import IJ
    foo()

此外,请勿使用abc作为模块名称,它是标准库模块:Abstract Base Class 2.7Abstract Base Class 3.6

修改:导入为Kind Stranger时,不要使用尾随.py