gpt4 book ai didi

Python 导入不一致的行为

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:02 25 4
gpt4 key购买 nike

我有一个像这样的 py 文件,它出错了。

from world import acme

def make_stuff_happen():
acme.account.foo() # Works
acme.subscription.bar() # FAIL: "module 'object' has no attribute 'subscription'"

make_stuff_happen()

但这行得通!

from world import acme 
from world.acme import subscription

def make_stuff_happen():
acme.account.foo() # Works
subscription.bar() # Now this works.

make_stuff_happen()

我只能说 WTF,这可能是什么原因造成的?acme.accountacme.subscription 的行为至少应保持一致。

谢谢!

Update- acme文件夹的文件夹结构:

acme
|-- __init__.py
|-- account.py
|-- catalog.py
|-- core.py
|-- proxy.py
|-- subscription.py
`-- utils.py

__init__.py 是完全空白的。

最佳答案

子模块在模块文件夹中的 __init__.py 文件中被引用。 acme__init__.py 中似乎未引用 subscription

但是,当您执行 import world.acme.subscription 时,它知道在不与 __init__.py 交谈的情况下继续挖掘该文件夹。

根据您对__init__.py的描述为空,您应该在__init__.pyimport subscription

有关如何设置模块的更多信息,请参阅 documentation .有一个设置声音模块的很好的例子。

关于Python 导入不一致的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320467/

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