如何使用C++导入多个同名的 python 模块

How to import multiple python modules with same name with C++

本文关键字:python 模块 何使用 C++ 导入      更新时间:2023-10-16

我使用PyImport_ImportModule在C++中导入python模块。

现在我在不同的文件夹中有两个同名的 Python 模块文件,如下所示:

c:Demo1plugin.py and c:Demo2plugin.py

我知道在蟒蛇,可以使用

import Demo1.plugin as p1
import Demo2.plugin as p2

如何在C++,PyImport_ImportModule或其他情况下做到这一点?

我找到了一个解决方法:执行python c:Demo1plugin.py并从中获取输出,但这不是一个好的解决方案。

要只导入一个文件,我会使用PyObject* PyImport_ImportModule(const char *name)

PyObject *p1 = PyImport_ImportModule( "Demo1.plugin" );
PyObject *p2 = PyImport_ImportModule( "Demo2.plugin" );

如果您的路径设置正确,这应该可以正常工作。或者,您可以使用PyObject* PyImport_Import(PyObject *name),但随后您必须管理名称的重新计数。

PyObject *s1 = PyUnicode_FromString( "Demo1.plugin" );
PyObject *s2 = PyUnicode_FromString( "Demo2.plugin" );
PyObject *p1 = PyImport_Import( s1 );
PyObject *p2 = PyImport_Import( s2 );
Py_DECREF( s1 );
Py_DECREF( s2 );

您可能需要将__init__.py文件添加到Demo1Demo2文件夹中。

你可以通过这种方式包含它们

include "headers/myHeader.h"
include "../moreHeaders/myHeader.h"

只需确保在两个头文件中使用不同的命名空间来访问变量和函数