2024-05-13 13:30:27 发布
网友
我是factory_boy模块的新手。在我的代码中,我import factory,然后使用此导入使用factory.fuzzy访问fuzzy属性,然后它抛出错误module 'factory' has no attribute 'fuzzy'
import factory
factory.fuzzy
module 'factory' has no attribute 'fuzzy'
我通过再次像这样导入解决了这个问题import factory from factory import fuzzy
import factory from factory import fuzzy
这样做没有错误
这是什么原因
导入Python模块(您的import factory)时,可以直接访问该模块中声明的内容(例如factory.Factory):模块中声明的所有符号都会自动导出
factory.Factory
但是,如果嵌套模块未导入其父模块,则必须直接导入
在这里,factory.Factory可用,因为factory/__init__.py包含:
factory/__init__.py
from .base import Factory
=>;键入factory.Factory时,Python在factory/__init__.py中查找名为Factory的符号,这是(根据上行)对factory/base.py中定义的Factory类的引用
Factory
factory/base.py
由于在factory/__init__.py中没有带from . import fuzzy的行,Python无法以这种方式加载它
from . import fuzzy
factory_boy包中的其他模块依赖于第三方包; 例如,factory.django导入Django。如果factory/__init__.py包含from . import django行(需要从import factory提供factory.django),则运行import factory的每个程序都需要安装Django
factory.django
from . import django
为了让包的用户决定他们依赖什么,在可能的情况下选择不在包的顶层添加这些直接导入-这允许将来的版本在不破坏现有代码的情况下添加外部依赖项
为什么会发生这种情况?
导入Python模块(您的
import factory
)时,可以直接访问该模块中声明的内容(例如factory.Factory
):模块中声明的所有符号都会自动导出但是,如果嵌套模块未导入其父模块,则必须直接导入
在这里,
factory.Factory
可用,因为factory/__init__.py
包含:=>;键入
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为了让包的用户决定他们依赖什么,在可能的情况下选择不在包的顶层添加这些直接导入-这允许将来的版本在不破坏现有代码的情况下添加外部依赖项
相关问题 更多 >
编程相关推荐