Cython构建错误:缓冲区dtype不匹配

时间:2014-05-17 13:33:33

标签: python python-2.7 numpy cython

我需要64位版本的非标准python模块才能使用我的python(2.7)64位代码,但我试图编译源代码:

  1. 我编译了setup_Assignment.py文件以使用SDK 7.0获取AoN.c文件

  2. 然后我使用C编译器(即cl.exe)编译AoN.c

  3. 但是在编译C文件期间发生了这个错误:

    fatal error c1083: cannot open include file:
        'pyconfig.h': No such file or directory
    

    以上是使用64位编译器完成的,尽管出现了错误,仍然生成了.pyd(dll)文件,这反过来又产生了这个错误:

    ValueError: Buffer dtype mismatch, expected 'ITYPE_t' but got 'long long'
    

    当我尝试使用64位python 2.7运行脚本时(我使用的是Windows 7机器):

    下面是编译的安装文件和我得到的错误。我可以帮助找出错误指向的内容。如果需要python脚本我愿意提出来,此时我觉得我已经有很多了。

    谢谢!

    setup_Assignment.py:

    from __future__ import division, print_function, absolute_import
    import sys
    sys.dont_write_bytecode = True
    
    import numpy as np
    from distutils.core import setup
    from distutils.extension import Extension
    from Cython.Distutils import build_ext
    from Cython.Build import cythonize
    
    import subprocess
    import Cython.Compiler.Options
    Cython.Compiler.Options.annotate = True
    
    setup(
          cmdclass={'build_ext': build_ext},
          ext_modules = [
                  Extension("AoN",
                            ["AoN.pyx"],
                            include_dirs=[np.get_include()])
                        ]
         )
    

    运行编译文件后出错:

    Traceback (most recent call last):
      File "C:/Users/AMAMIFE/Desktop/obi/new.py", line 453, in <module>
        main()
      File "C:/Users/AMAMIFE/Desktop/obi/new.py", line 437, in main
        zones, loads=AoN.AllOrNothing(graph,demand,i)  #And assign
      File "AoN.pyx", line 58, in AoN.AllOrNothing (AoN.c:2138)
        _Ordering_and_Forward_Star(a_nodes,
      File "AoN.pyx", line 177, in AoN._Ordering_and_Forward_Star (AoN.c:3059)
        cdef _Ordering_and_Forward_Star(np.ndarray[ITYPE_t, ndim=1, mode='c'] a_nodes, #A_Node/B_Node
    ValueError: Buffer dtype mismatch, expected 'ITYPE_t' but got 'long long'
    

0 个答案:

没有答案