如何使用C++导入多个同名的 python 模块
How to import multiple python modules with same name with C++
我使用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
文件添加到Demo1
和Demo2
文件夹中。
你可以通过这种方式包含它们
include "headers/myHeader.h"
include "../moreHeaders/myHeader.h"
只需确保在两个头文件中使用不同的命名空间来访问变量和函数
相关文章:
- 在 python 模块中导入子模块时PyImport_Import失败
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- 如何使用 swig C++命名空间作为 python 模块公开
- 如何将 cv::mat 对象从 python 模块传递到 c++ 函数并返回返回的 cv::mat 类型为对象?
- C++ Swig Python 模块中的内存泄漏
- boost.python模块扩展生成SIGSEGV
- 使用Boost Python的Python模块是空的?
- 为什么无法在 Cocoa 应用程序调用的 C++ func 中嵌入自定义 Python 模块
- 来自C 的自动化Python模块的张量源
- 如何使用C++导入多个同名的 python 模块
- C++ Python 模块导入错误: "undefined symbol: Py_InitModule3" ( Py_InitModule () )
- 使用 Boost.Python 创建的 Python 模块不会被导入
- 导入 Boost Python 模块 (function_impl_base9max_arityEv) 时出错
- numpy.core.multiarray在通过Xcode中开发的C 应用程序调用Python模块时未能导入
- 运行时错误:找不到与 ImageSensor 匹配的 Python 模块
- GDB Python模块读取内存内容
- 我可以编译boost.python模块而没有BJAM
- C++优化级别是否会影响Swig Python模块的性能
- 如何从python模块(boost.python)导入类
- 使用C/neneneba API和C++类编写Python模块