绝对导入不起作用,但相对导入起作用

2024-05-14

这是我的应用程序结构:

foodo/
    setup.py
    foodo/
        __init__.py
        foodo.py
        models.py

foodo/foodo/foodo.py从导入类models.py module:

from foodo.models import User

这会抛出一个ImportError:

ImportError: No module named models

但是,如果我使用相对导入,它确实有效:

from models import User

如果我在导入之前放置一个 pdb 断点并继续,它也可以工作。

我应该能够同时使用绝对导入和相对导入,对吗?


你有一个local module foodoo在 - 的里面foodoo包裹。 Python 2 中的导入始终首先在当前包中查找名称,然后再查找顶级名称。

要么重命名foodoo模块内的foodoo包(消除了本地foodoo首先找到)或使用:

from __future__ import absolute_import

位于包中模块的顶部,以启用 Python-3 样式导入,其中顶级模块是唯一搜索的模块,除非您在名称前加上前缀.使名字相对。看PEP 328——导入:多行和绝对/相对 https://www.python.org/dev/peps/pep-0328/更多细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绝对导入不起作用,但相对导入起作用 的相关文章