如何解决模块“sample_project”没有属性“data”
我以为我了解python导入系统,但看起来我错了。
出于某种原因,我无法使用包中的模块,除非我在 __init__.py
或脚本代码中明确导入它们。这不是 documentation 所说的,我还有其他项目(例如 this one)没有这种问题。
为了说明它,我创建了一个超级简单的例子。具有以下结构的项目:
sample_project
├── sample_project
│ ├── __init__.py
│ └── data.py
└── setup.py
setup.py
看起来像这样
import setuptools
setuptools.setup(name='sample_project',packages=setuptools.find_packages())
和data.py
像这样
class Data:
pass
__init__.py
为空。
在pip install -e .
之后我可以import sample_project
,但是sample_project.data
抛出
AttributeError: module 'sample_project' has no attribute 'data'
请注意,data.py
不在子模块内,因此问题与 this one 不同。
如果我在项目目录中或在项目目录外,就会发生这种情况。
我可以在我的脚本或 import sample_project.data
中通过 __init__.py
修复它,但我不明白为什么它不起作用。感觉默认的 __all__
由于某种原因不起作用。
在我上面提到的 project 中,我在 new_semantic_parsing
目录中有多个 python 文件。其中一些是在 __init__.py
中导入的,有些不是,但我对它们中的任何一个都没有这个问题。
例如
import new_semantic_parsing
new_semantic_parsing.utils
即使 utils
未明确导入到 __init__.py
中也能正常工作。
很明显,某处有问题,但我看不到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。