gpt4 book ai didi

python导入文件夹内的模块

转载 作者:太空狗 更新时间:2023-10-30 01:22:38 25 4
gpt4 key购买 nike

想学习用文件夹导入模块的正确方法

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

/plants/__init__.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.pycorn.py 中。我想在 utilities.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 文件夹中配置 __init__.py 以便它导入 garden 中的所有模块吗?像实用程序和一些工具?所以我不必在 carrot.py 和 corn.py 中导入实用程序并能够使用实用程序?

最佳答案

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

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

app/package_a/fun_a.py

def print_a():
print 'This is a function in dir package_a'

app/package_b/fun_b.py

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
  • main.py 执行:from app.package_b import fun_b
  • fun_b.py from app.package_a.fun_a import print_a

如果你的 PYTHONPATH 中有 app,那么你可以从任何地方 >>> from app.package_...

文件夹package_b 中的文件使用了文件夹package_a 中的文件,这就是您想要的。对吧??

关于python导入文件夹内的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com