Python导入错误“;模块';工厂';没有属性';模糊'&引用;

Python导入错误“;模块';工厂';没有属性';模糊'&引用;,python,testing,python-import,factory-boy,Python,Testing,Python Import,Factory Boy,我是新来的。在我的代码中,我导入工厂,然后使用此导入使用工厂访问模糊属性。模糊然后抛出错误模块“工厂”没有属性“模糊” 我通过再次像这样导入解决了这个问题 进口工厂 从工厂导入模糊 这样做没有错误 这是什么原因 为什么会发生这种情况? 导入Python模块(您的导入工厂)时,可以直接访问该模块中声明的内容(例如工厂.工厂):自动导出模块中声明的所有符号 但是,如果嵌套模块未导入其父模块,则必须直接导入 在这里,factory.factory是可用的,因为factory/\uuuu init\uu

我是新来的。在我的代码中,我
导入工厂
,然后使用此导入使用
工厂访问模糊属性。模糊
然后抛出错误
模块“工厂”没有属性“模糊”

我通过再次像这样导入解决了这个问题
进口工厂
从工厂导入模糊

这样做没有错误

这是什么原因

为什么会发生这种情况? 导入Python模块(您的
导入工厂
)时,可以直接访问该模块中声明的内容(例如
工厂.工厂
):自动导出模块中声明的所有符号

但是,如果嵌套模块未导入其父模块,则必须直接导入

在这里,
factory.factory
是可用的,因为
factory/\uuuu init\uuuu.py
包含:

来自.base导入工厂
=>当您键入
factory.factory
时,Python会在
factory/\uuu init\uuuuuuuuuuuuuuuuuuupy
中查找名为
factory
的符号,这是(根据上行)对
factory/base.py
中定义的
factory
类的引用

因为没有包含来自的
的行。导入fuzzy
工厂/\uuuu init\uuuu.py
中,Python无法以这种方式加载它

但是你为什么不加上这一行呢? factory_boy包中的其他模块依赖于第三方包; 例如,
factory.django
导入django。如果
factory/\uuuu init\uuuu.py
包含来自的
。导入django
行(需要有
工厂.django
可从
导入工厂
获得),每个运行
导入工厂
的程序都需要安装django


为了让包的用户决定他们依赖什么,在可能的情况下选择不在包的顶层添加这些直接导入-这允许将来的版本在不破坏现有代码的情况下添加外部依赖项。

您确定这一点吗。请再试一次。