python导入模块内部折叠

2024-05-16 09:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

学习如何正确导入文件夹

/garden
    __init__.py
    utilities.py
    someTools.py
    /plants
        __init__.py
        carrot.py
        corn.py

里面/plants/__init__.py我有

^{pr2}$

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和{}内。我想使用utilities.py中的函数

当我

import utilities as util

# try use it and got global name error
util.someFunc()
# NameError: global name 'util' is not defined # 

我可以在plants文件夹中配置__init__.py,以便导入花园中的所有模块吗?比如公用事业和一些工具?所以我不必在这两个文件中都导入实用程序胡萝卜.py以及玉米.py能使用公用事业吗?在


Tags: nameinpyimportinfo文件夹initutil
1条回答
网友
1楼 · 发布于 2024-05-16 09:33:17

注意:所有__init__.py文件都是空的。

main.py
app/ ->
    __init__.py
    package_a/ ->
       __init__.py
       fun_a.py
    package_b/ ->
       __init__.py
       fun_b.py

应用程序/软件包\u a/fun_a.py

^{pr2}$

应用程序/软件包
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()

在主.py

from app.package_b import fun_b
fun_b.print_b()

如果运行$ 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
  • 在主.py做:from app.package_b import fun_b
  • 有趣的事from app.package_a.fun_a import print_a

如果您的appPYTHONPATH中,那么您可以从任何地方{}

所以文件夹package_b中的文件使用了package_a文件夹中的文件,这就是您想要的。正确的??在

相关问题 更多 >