我正在尝试构建一个包含* .pyx文件的Python包(pyregion),并且在构建过程中会出现错误。检查以下输出:
$ python setup.py build
running build
running build_py
creating build
creating build/lib.macosx-10.5-x86_64-2.7
....
running build_ext
building 'pyregion._region_filter' extension
C compiler: gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -DNDEBUG -g -O3 -arch x86_64
error: unknown file type '.pyx' (from 'src/_region_filter.pyx')
关于问题的任何想法?需要注意的是,我在OSX上使用了Enthought构建的Python(7.1)和最新的Xcode(4.1)。
干杯
答案 0 :(得分:6)
应该使用Pyrex将.pyx
编译为C,然后编译为目标代码。检查发行版中是否存在src/_region_filter.c
文件并破解setup.py
脚本以构建该文件。 (另外,请考虑filing a bug report,因为这不应该发生。)
答案 1 :(得分:3)
首先安装pyrex,它会起作用。
执行以下操作: sudo pip install pyrex
答案 2 :(得分:0)
我通过使用cython获得了相同的错误,但我通过更改解决了它
cmdclass = {'build_ext ': build_ext },
到
cmdclass = {'build_ext': build_ext },
您可能没有注意到'build_ext '
背后的多余空白字符。
答案 3 :(得分:0)
我自己为您提供的错误消息的解决方案:在*.pyx
脚本中对您的setup.py
文件进行Cython化
from distutils.core import setup
from Cython.Build import cythonize
...
cythonised_files = cythonize("src/*.pyx")
(我尝试安装Pyrex,但结果却出现了关于无法识别的字符的错误)
此处有更多详情:http://docs.cython.org/src/userguide/source_files_and_compilation.html
答案 4 :(得分:0)
对我来说,在尝试安装 pyFFTW
时,解决此问题的唯一方法是首先通过 Cython
安装 pip
。另见https://github.com/pyFFTW/pyFFTW/issues/252。