Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t在成功编译后导入已编译的cython函数_Python_Cython - Fatal编程技术网

Python Can';t在成功编译后导入已编译的cython函数

Python Can';t在成功编译后导入已编译的cython函数,python,cython,Python,Cython,我正在Windows 10(Spyder 3.2.3)和Python 3.6.3上测试Cython,我编写了以下函数: from libc.stdlib cimport malloc, free cdef int** t3(int* El, int lEl): cdef int lElsq = lEl*lEl cdef int i,j cdef int** rr = <int**> malloc(2*sizeof(int*)) for i in ra

我正在Windows 10(Spyder 3.2.3)和Python 3.6.3上测试Cython,我编写了以下函数:

from libc.stdlib cimport malloc, free

cdef int** t3(int* El, int lEl):
    cdef int lElsq = lEl*lEl
    cdef int i,j
    cdef int** rr = <int**> malloc(2*sizeof(int*))
    for i in range(2):
        rr[i] = <int*> malloc(lElsq*sizeof(int))
    for i in range(lEl):
        for j in range(lEl):
            rr[0][i*lEl+j] = El[i]
            rr[1][i*lEl+j] = El[j]
    return rr
编译没有引发任何错误,创建了许多文件:

在与原始文件相同的目录中:

  • 同名的
    tempCython.c
    文件
  • a
    tempCython.cp36-win\u amd64.pyd
    文件
在子目录
build\temp.win-amd64-3.6\Release

  • a
    tempCython.obj
    文件
  • 一个
    tempCython.cp36-win\u amd64.exp
    文件
  • 一个
    tempCython.cp36-win_amd64.lib
    文件
告诉我需要
pyd
文件,所以我删除了文件名中的
cp36-win\u amd64

我可以毫无错误地导入它,但我的函数
t3
从未出现,它根本不存在

没有任何错误信息,我现在不知所措。我曾经在第三方软件包中遇到过类似的错误,但我始终不明白是什么导致了这些错误。为什么我的功能不在那里


我还想知道所有这些附加文件的意义,我实际上需要哪些文件?

您已经编写了一个
cdef
函数,并试图从python调用它。不幸的是,
cdef
函数在python中是不可见的(请参阅),因此您需要做更多的工作来向python公开您的函数。特别是,您需要编写一个调用
cdef
函数的
def
函数或
cpdef
函数,然后从python调用该函数。

谢谢。你可以回答这个问题,我会给你分数。但这是一个只有链接的答案…我按照你说的做了,但仍然得到一个“无属性”错误。我使用的是一个
def
函数,它的基本意思是
返回cfunction(params)
。除非您共享一个完整的可运行示例和完整的错误消息,否则很难提供帮助。也许最好自己问个问题。
from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("tempCython.pyx"),
)