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

时间:2019-06-20 15:14:10

标签: python c++

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

现在我在不同的文件夹中有两个具有相同名称的Python模块文件,例如:

c:\Demo1\plugin.py and c:\Demo2\plugin.py

我在python中知道,可以使用

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

如何在C ++中使用PyImport_ImportModule或其他方式实现?

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

2 个答案:

答案 0 :(得分:1)

要仅导入文件,我将使用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文件夹中。

答案 1 :(得分:0)

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

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

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