Python 如何为扩展模块指定不同的名称? 我有一个名为'PKG '的包,用C++编写了几个扩展模块,这些模块驻留在共享库中,名字为“模块”、“所以”、“模块”、“SO”等。这些可以使用通常的语法导入: import _module1
但是,我更希望用户将模块名称视为“mod1”、“mod2”等,以便他们可以这样进行导入:Python 如何为扩展模块指定不同的名称? 我有一个名为'PKG '的包,用C++编写了几个扩展模块,这些模块驻留在共享库中,名字为“模块”、“所以”、“模块”、“SO”等。这些可以使用通常的语法导入: import _module1,python,module,python-2.7,Python,Module,Python 2.7,但是,我更希望用户将模块名称视为“mod1”、“mod2”等,以便他们可以这样进行导入: import mod1 有没有办法不用重命名共享库就可以做到这一点 Thanx.如果您不介意在源代码中使用原始模块名称,但只想使用替代名称,则可以使用以下语法: import _module1 as mod1 除了导入别名建议外,您还可以在代码中创建一个mod1文件夹,其中包含一个\uuuu init\uuuuuuuuuupy文件,其中包含: from _module1 import * 现在执行im
import mod1
有没有办法不用重命名共享库就可以做到这一点
Thanx.如果您不介意在源代码中使用原始模块名称,但只想使用替代名称,则可以使用以下语法:
import _module1 as mod1
除了导入别名建议外,您还可以在代码中创建一个
mod1
文件夹,其中包含一个\uuuu init\uuuuuuuuuupy
文件,其中包含:
from _module1 import *
现在执行
import mod1
将运行\uu init\uuuuuuuuuuuuuuuupy
文件,该文件将加载模块1
中的所有内容,并将其放入mod1
的命名空间中,有效地使mod1
的行为类似于\u module1
(假设import*/code>按预期工作).我还看到了一种更复杂的方法。基本上,用户友好的模块使用代理来处理对项目中使用的多个子模块的调度,而不牺牲可用性
主模块可能如下所示:
from mymodule.registry import _proxy
import sys
sys.modules[__name__] = _proxy
基本上是的实现,并处理延迟加载等
如果您不想麻烦使用代理:
"""Main module `mod1`"""
import _module1
import sys
sys.modules[__name__] = _module1
这适用于已经分发给用户的API。我不想让他们改变他们的代码。