导入同名的python模块和扩展模块

问题描述

假设我构建了一个包含 Python 模块和扩展模块的包,但名称相同

mypackage
|
+-- __init__.py
|
+-- mymodule.py
|
+-- mymodule.cpython-39-x86_64-linux-gnu.so

我发现当我执行 from mypackage import mymodule 时,它是被导入的扩展模块。我想知道为什么会这样?扩展模块在导入期间是否优先?如果是这样,有人可以指出记录此行为的位置吗?

解决方法

查看有关导入的 doc,它包含以下有关导入同名模块的简介:

提示:搜索顺序由函数imp.get_suffixes()返回的后缀列表决定。通常按以下顺序搜索后缀:“.so”、“module.so”、“.py”、“.pyc”