我想从模块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的依赖?
答案 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.7,Abstract Base Class 3.6
修改:导入为Kind Stranger时,不要使用尾随.py
。