Estoy tratando de construir un paquete de Python (pyregion) que contenga un archivo * .pyx y aparece un error durante el proceso de construcción. Verificando la salida a continuación:

$ 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')

¿Alguna idea sobre cuál podría ser el problema? Solo para tener en cuenta, estoy usando la compilación Enthought de Python (7.1) en OSX con el último Xcode (4.1).

Salud

11
ebressert 27 jul. 2011 a las 18:28

4 respuestas

La mejor respuesta

.pyx debe compilarse en C con Pyrex y luego compilarse en código objeto. Compruebe si hay un archivo src/_region_filter.c presente en la distribución y piratee el script setup.py para compilarlo. (Además, considere presentar un informe de error, ya que esto no debería estar sucediendo).

6
Fred Foo 27 jul. 2011 a las 14:34

Obtengo el mismo error al usar cython, pero lo soluciono cambiando

cmdclass = {'build_ext ': build_ext },

Para

cmdclass = {'build_ext': build_ext },

Como puede que no note, un carácter en blanco redundante detrás de 'build_ext '.

0
pinkdawn 4 jul. 2012 a las 06:50

Mi propia solución al mismo mensaje de error que tenía: Cythonize sus archivos *.pyx en el script setup.py

from distutils.core import setup
from Cython.Build import cythonize
...
cythonised_files = cythonize("src/*.pyx")

(Intenté instalar Pyrex, pero terminé con errores sobre caracteres no reconocidos)

Más detalles aquí: http://docs.cython.org/src/userguide/source_files_and_compilation.html

0
decvalts 3 ago. 2015 a las 21:06

Instale pyrex primero y funcionará.

Haga lo siguiente: sudo pip install pyrex

3
red_panda 23 jun. 2012 a las 01:28