PyImport_Import segfau进口

2024-10-02 14:19:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我调用一个具有C++函数的单个函数的Python模块。我得到一个堆栈跟踪。我将它隔离到python模块中的“importh5py”行。如果我在解释器中运行这个模块和函数,一切正常。另外,所有其他的进口商品都有效。如果我删除“importh5py”并对使用它的代码进行注释,然后加载该模块并从c++调用该函数,则一切正常。在

也做了一个测试.py当然,如果我这样做,在C++中加载和加载模块,它的结果是一样的。在

以前有人见过这样的东西吗?有没有办法绕过它,因为我真的需要在我的Python模块中使用H5Py,需要从C++应用程序调用这个模块。在

Killing process on sync signal: 6, Aborted                                                          
BEGIN stack trace                                                                                   
0: /lib64/libpthread.so.0() [0x346620f500]                                                          
1: /lib64/libc.so.6(gsignal+0x35) [0x3465e328a5]                                                    
2: /lib64/libc.so.6(abort+0x175) [0x3465e34085]                                                     
3: /opt/gs/lib/libhdf5.so.8(H5check_version+0x13d) [0x2b8c62611e5d]                                 
4: /opt/gs/epd-7.3/lib/python2.7/site-packages/h5py/h5f.so(inith5f+0x19c1) [0x2b8c8df11481]         
5: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(_PyImport_LoadDynamicModule+0xc2) [0x2b8c61c78312]       
6: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(+0xed290) [0x2b8c61c76290]                               
7: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(+0xed531) [0x2b8c61c76531]                               
8: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x2be) [0x2b8c61c7756e]       
9: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(+0xd447d) [0x2b8c61c5d47d]                               
10: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(PyObject_Call+0x68) [0x2b8c61bcef28]                    
11: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x56) [0x2b8c61c5d9a6]    
12: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x28b8) [0x2b8c61c60f08]             
13: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x8d2) [0x2b8c61c65c12]               
14: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(PyEval_EvalCode+0x32) [0x2b8c61c65c62]                  
15: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(PyImport_ExecCodeModuleEx+0xc2) [0x2b8c61c74c02]        
16: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(+0xec1ce) [0x2b8c61c751ce]                              
17: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(+0xeda8d) [0x2b8c61c76a8d]                              
18: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(+0xed290) [0x2b8c61c76290]                              
19: /opt/gs/epd-7.3/lib/libpython2.7.so.1.0(+0xed764) [0x2b8c61c76764]                              
END stack trace     

Tags: 模块函数gsstack堆栈libtrace解释器
1条回答
网友
1楼 · 发布于 2024-10-02 14:19:33

不是一个解决方案,而是我过去使用的一种可能的解决方法:不要调用PyImport_Import(),或者在调用它之前,运行

PyRun_SimpleString("import h5py");

如果成功,它将加载h5py系统模块,随后的导入将只获取此字典中的模块。在

相关问题 更多 >