什么原因导致导入错误报告“(未知位置)”?

问题描述 投票:0回答:1

这个问题,有这个导入错误:

>>> from flask_security import login_user
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'login_user' from 'flask_security' (unknown location)

什么原因导致“(未知位置)”消息?

在看到这个之前,我有一种模糊的假设,这意味着该模块是内置于 python 本身的,就像

sys
一样,所以它根本没有任何外部文件。

但链接问题中的情况显然并非如此。

python python-import
1个回答
0
投票

使用没有适当

__spec__
设置的动态创建的模块时,可能会产生此类错误。您可以使用
types.ModuleType
importlib
中的工具创建此类模块(常见用例是 自定义导入器)。

这是一个最小的示例,涉及使用

type.ModuleType
直接创建模块对象。

import sys
import types

sys.modules["foo"] = types.ModuleType("foo", "Foo module")


>>> from foo import bar
Traceback (most recent call last):
....
ImportError: cannot import name 'bar' from 'foo' (unknown location)

>>> sys.modules["foo"].__spec__ is None
True
© www.soinside.com 2019 - 2024. All rights reserved.