Python导入错误“模块“工厂”没有属性“fuzzy”

2024-05-13 13:30:27 发布

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

我是factory_boy模块的新手。在我的代码中,我import factory,然后使用此导入使用factory.fuzzy访问fuzzy属性,然后它抛出错误module 'factory' has no attribute 'fuzzy'

我通过再次像这样导入解决了这个问题
import factory from factory import fuzzy

这样做没有错误

这是什么原因


Tags: 模块no代码fromimport属性factory错误
1条回答
网友
1楼 · 发布于 2024-05-13 13:30:27

为什么会发生这种情况?

导入Python模块(您的import factory)时,可以直接访问该模块中声明的内容(例如factory.Factory):模块中声明的所有符号都会自动导出

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

在这里,factory.Factory可用,因为factory/__init__.py包含:

from .base import Factory

=>;键入factory.Factory时,Python在factory/__init__.py中查找名为Factory的符号,这是(根据上行)对factory/base.py中定义的Factory类的引用

由于在factory/__init__.py中没有带from . import fuzzy的行,Python无法以这种方式加载它

但是为什么不加上这一行呢

factory_boy包中的其他模块依赖于第三方包; 例如,factory.django导入Django。如果factory/__init__.py包含from . import django行(需要从import factory提供factory.django),则运行import factory的每个程序都需要安装Django

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

相关问题 更多 >