Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为扩展模块指定不同的名称? 我有一个名为'PKG '的包,用C++编写了几个扩展模块,这些模块驻留在共享库中,名字为“模块”、“所以”、“模块”、“SO”等。这些可以使用通常的语法导入: import _module1_Python_Module_Python 2.7 - Fatal编程技术网

Python 如何为扩展模块指定不同的名称? 我有一个名为'PKG '的包,用C++编写了几个扩展模块,这些模块驻留在共享库中,名字为“模块”、“所以”、“模块”、“SO”等。这些可以使用通常的语法导入: import _module1

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

但是,我更希望用户将模块名称视为“mod1”、“mod2”等,以便他们可以这样进行导入:

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。我不想让他们改变他们的代码。