小编And*_*rew的帖子

包中的 Cython 酸洗“未找到”错误

我在腌制 Cython 类时遇到问题,但仅当它在包中定义时。这个问题之前在网上提到,但他们没有说明它是如何解决的。这里有两个组件:使用__reduce__方法的 Cython 酸洗和包错误。

Cython 酸洗成功

我将首先展示它在没有包部分的情况下是如何工作的。这个例子工作正常。

Cython 文件

我的 Cython 文件是reudce.pyx

cdef class Foo(object):
    cdef int n

    def __init__(self, n):
        self.n = n

    def __reduce__(self):
        return Foo, (self.n,)
Run Code Online (Sandbox Code Playgroud)

安装文件

这可以编译为setup.py

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = [Extension("reduce", ["reduce.pyx"])]
)
Run Code Online (Sandbox Code Playgroud)

通过执行 python setup.py build && cp build/lib*/reduce.so .

测试脚本

测试脚本被调用test_reduce.py并且是:

import reduce
import pickle …
Run Code Online (Sandbox Code Playgroud)

python pickle cython

5
推荐指数
1
解决办法
1188
查看次数

标签 统计

cython ×1

pickle ×1

python ×1