Методы расширения pycxx не выбираются в Python 3 - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь написать расширения Python, используя pycxx (http://cxx.sourceforge.net/PyCXX-Python3.html).). Для эксперимента я выполнил шаги, изложенные в 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'))

Я работаю над linux машина с Python 3.7.

...