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

标签 python python-c-api python-embedding

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

我希望客户端代码(python)能够做这样的事情:

import MainModuleName
import MainModuleName.SubModuleName

而不是当前:

import MainModuleName
import MainModuleNameSubModuleName

哪个 imo 看起来很丑陋并且使命名空间困惑。

有没有可能不用弄乱文件系统目录?

最佳答案

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

你想要一个名为 MainModuleName.SubModuleName 的模块然后 MainModuleName应该是一个带有 __init__.py 的目录文件。

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

关于python - 使用 python c api 的嵌套模块(包)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628405/

相关文章:

python - 在 Python 中测试期间的 CPU 使用率?

python - c++0x std::shared_ptr 与 boost::shared_ptr

python - python C API 中新自定义类对象的返回列表

python - PyImport_ImportModule,可以从内存中加载模块吗?

PythonQt 不打印任何东西

python - 在Python中读取具有最新时间戳的文本文件

python - 如何在 Flask 应用程序模型中添加带有值(预定义)的下拉菜单?

python - 是否可以将 PyPy 嵌入到 .NET 应用程序中?

python - 使用已编译的动态共享库分发 Python 包

python - 使用线程调用 Py_Finalize 时出现 AssertionError(仅限 3.X)