Методы расширения pycxx не выбираются в Python 3
Я пытаюсь написать расширения 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
,