gpt4 book ai didi

cython - 我的 Cython 有什么问题?

转载 作者:行者123 更新时间:2023-12-02 01:36:04 28 4
gpt4 key购买 nike

我尝试围绕 C++ 库编写一个 Cython 包装器 http://primesieve.org/

它包装了一个函数count。到目前为止,它可以正确安装 python setup.py install,但是当我 import primesieve 时,函数 primesieve.count 丢失了。有什么想法吗?


primesieve.pxd(在 http://docs.cython.org/src/tutorial/clibraries.html 之后)

cdef extern from "stdint.h":
ctypedef unsigned long long uint64_t

cdef extern from "primesieve/include/primesieve.h":
uint64_t primesieve_count_primes(uint64_t start, uint64_t stop)

primesieve.pyx

cimport primesieve

cpdef int count(self, int n):
return primesieve.primesieve_count_primes(1, n)

设置.py

from setuptools import setup, Extension
from Cython.Build import cythonize

setup(
ext_modules = cythonize([Extension("*", ["primesieve.pyx"], include_dirs = ["primesieve/include"])])
)

最佳答案

通过将 libraries = ["primesieve"] 添加到 的参数,修改 setup.py 以链接 libprimesieve.so >扩展 构造函数。没有它,你会得到这个错误:

ImportError: ./primesieve.so: undefined symbol: primesieve_count_primes

一旦我更改了 setup.py,它对我有用:

$ python2 setup.py build
...
$ (cd build/lib.linux-x86_64-2.7 && python2 -c 'import primesieve; print primesieve.count(None, 5)')
3

关于cython - 我的 Cython 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31215419/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com