使用python c api的嵌套模块(包)?

使用python c api的嵌套模块(包)?,python,python-c-api,python-embedding,Python,Python C Api,Python Embedding,如何使用python c api创建嵌套模块(包?) 我希望客户端代码(python)能够执行以下操作: import MainModuleName import MainModuleName.SubModuleName 而不是目前: import MainModuleName import MainModuleNameSubModuleName 哪个imo看起来很难看,名称空间很混乱 不必乱动文件系统目录就可以吗?您不会乱动文件系统目录。文件系统目录是创建子模块的方式,除非您真的想变得晦涩

如何使用python c api创建嵌套模块(包?)

我希望客户端代码(python)能够执行以下操作:

import MainModuleName
import MainModuleName.SubModuleName
而不是目前:

import MainModuleName
import MainModuleNameSubModuleName
哪个imo看起来很难看,名称空间很混乱

不必乱动文件系统目录就可以吗?

您不会乱动文件系统目录。文件系统目录是创建子模块的方式,除非您真的想变得晦涩难懂并且有很多不必要的痛苦

您希望有一个名为
MainModuleName.SubModuleName
的模块,然后
MainModuleName
应该是一个包含
\uuuu init\uuuuu.py
文件的目录


执行C模块的一种常见方法是将所有C代码放在名称以下划线开头的模块中,在本例中为
\u mainmodulename.C
,然后从Python文件导入它们。这样做的目的是,您只需要在C中实现必须在C中实现的东西,其余的可以在Python中实现。您也可以通过这种方式使用纯Python回退。我建议您做类似的事情,用Python创建模块结构,然后用下划线名称从C模块导入类和函数

好的,我不会为了我的高度审美需要而试图弯曲python:)下划线方案看起来不错,但这是否意味着我必须为我的所有C函数/类提供python包装?由于MainModuleName的用户看不到_MainModuleName导入?不,您只需从
MainModuleName.\uuu init_uuuuuuu
中的
\u MainModuleName
导入函数,
MainModuleName
的用户可以
从MainModuleName
导入X。我明白了,出于某种原因,我认为在将模块导入到另一个模块时会包含导入的名称。我实现了这个方法,我对结果非常满意。塔克·斯米克特!