如何在python3中使用python2中的.so模块?

2024-05-16 18:57:53 发布

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

也许我的问题很明显,但我没能找到一个明显的决定。在

python2.6+扩展名为audit和auparse。这些是与audit libs python包一起分发的动态库:

[vitaly@thermaltake tmp]$ repoquery -lq audit-libs-python
/usr/lib64/python2.7/site-packages/_audit.so
/usr/lib64/python2.7/site-packages/audit.py
/usr/lib64/python2.7/site-packages/audit.pyc
/usr/lib64/python2.7/site-packages/audit.pyo
/usr/lib64/python2.7/site-packages/auparse.so

我想在最新的Python解释器中使用这个扩展,因为suspicions about the incorrect handling of dynamic memory in python 2.6+。由于某些原因,我无法从Python 3.3中加载它们:

^{pr2}$

如果有人能解释一下将这类模块导入现代Python解释器的过程,我将非常高兴。在这种情况下,很难相信第二和第三分支之间的向后兼容性也被破坏了。谢谢您。在


Tags: sopackagesusrsite动态audit解释器tmp
1条回答
网友
1楼 · 发布于 2024-05-16 18:57:53

必须为每个特定的Python版本编译.so模块,甚至不能在python2.7中重用为python2.6构建的.so模块。在

当切换到python3时,情况会变得更糟,since there are some API changes,因此SO不会从.C文件(可能有例外)中进行未更改的构建。在

一种解决方法是使用xmlrpc为2.6模块中要使用的函数提供服务,然后从运行python3.x的单独Python进程调用它,这应该是最简单的方法。在

相关问题 更多 >