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