看这个问题,有这个导入错误:
>>> 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
一样,所以它根本没有任何外部文件。
但链接问题中的情况显然并非如此。
__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