python导入文件夹中的模块
想了解使用文件夹导入模块的正确方法吗python导入文件夹中的模块,python,Python,想了解使用文件夹导入模块的正确方法吗 /garden __init__.py utilities.py someTools.py /plants __init__.py carrot.py corn.py 在我的 __all__ = ['carrot', 'corn'] from . import * 内部carrot.py def info(): print "I'm in carrot.py" 当我
/garden
__init__.py
utilities.py
someTools.py
/plants
__init__.py
carrot.py
corn.py
在我的
__all__ = ['carrot', 'corn']
from . import *
内部carrot.py
def info():
print "I'm in carrot.py"
当我这样做的时候
import garden
garden.carrot.info()
# got correct result
I'm in carrot.py
我的问题是如何更正utilities.py
的命名空间,例如在carrot.py
和corn.py
中。我想在utilities.py中使用函数
def info():
print "I'm in carrot.py"
内部carrot.py
当我
import utilities as util
# try use it and got global name error
util.someFunc()
# NameError: global name 'util' is not defined #
我可以在plants文件夹中配置\uuuuu init\uuuuuuuuuuupy
,以便导入花园中的所有模块吗?比如实用工具和一些工具?因此,我不必同时在carrot.py和corn.py中导入实用程序,就可以使用实用程序了?注意:所有\uuuuuu init\uuuuuuuuuuuupy
文件都是空的
应用程序/软件包\u a/fun\u a.py
应用程序/软件包\u b/fun\u b.py
main.py
如果运行$python main.py
,它将返回:
This is a function in dir package_b
going to call a function in dir package_a
------------------------------
This is a function in dir package_a
- main.py执行:
from app.package\u b import fun\u b
- fun_b.py从app.package_a.fun_a导入打印_a
如果您的PYTHONPATH
中有app
,那么您可以从app.package.\uu…
因此,文件夹
package\u b
中的文件使用了文件夹package\u a
中的文件,这就是您想要的。对吗?如果实用程序.someFunc()
有效,您是否尝试过?这个错误很奇怪,因为如果解释器无法导入它,它应该引发ImportError
Please。。不要import*
是否有一种方法可以导入app/下的模块,例如我想在fun\u a和fun\u b中使用main.func()。相反,如果在每个文件中导入main,我可以在init中执行类似于将main作为main导入的操作,以便在fun_a或fun_b中,我不必再次将main作为main导入,并且可以使用main.func()??
from app.package_a.fun_a import print_a
def print_b():
print 'This is a function in dir package_b'
print 'going to call a function in dir package_a'
print '-'*30
print_a()
from app.package_b import fun_b
fun_b.print_b()
This is a function in dir package_b
going to call a function in dir package_a
------------------------------
This is a function in dir package_a