pycxx扩展方法在Python 3中不可用

时间:2019-05-27 07:27:40

标签: python-3.x pickle python-3.7 python-extensions pycxx

我正在尝试使用pycxx(http://cxx.sourceforge.net/PyCXX-Python3.html)编写Python扩展。为了进行实验,我遵循了README中列出的步骤。但是,我发现在全局级别的扩展中定义的方法不是可腌制的。

In [1]: import simple

In [2]: simple
Out[2]: <module 'simple' from '<pycxx_dir>/obj/simple.so'>

In [3]: pickle.dumps(simple.func)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-16-2284e569486f> in <module>
----> 1 pickle.dumps(simple.func)

TypeError: can't pickle PyCapsule objects

这是因为simple.func.__reduce__返回了一个包含PyCapsule对象的元组,该对象不可腌制。

In [1]: simple.func.__reduce__()
Out[1]:
(<function getattr>,
 ((<capsule object NULL at 0x7f8851d77cf0>,
   <capsule object NULL at 0x7f8851d77450>),
  'func'))

我正在使用linuxPython 3.7机器上工作。

0 个答案:

没有答案