2011-07-27 18 views
8

Estoy intentando crear un paquete de Python (pyregion) que contenga un archivo * .pyx y se produce un error durante el proceso de compilación. Revisando el resultado siguiente:Error de tipo de archivo desconocido con el archivo .pyx

$ 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 observar, estoy usando la compilación de Enthought de Python (7.1) en OSX con la última versión de Xcode (4.1).

Saludos

+0

este fue el primer golpe en google para "tipo de archivo desconocido '.pyx'" ... y también estaba tratando de instalar pyregion. Bien hecho. – keflavich

Respuesta

6

El .pyx deben deben compilarse a C con Pyrex y luego compilados a código objeto. Compruebe si hay un archivo src/_region_filter.c presente en la distribución y hackear el script setup.py para compilarlo. (Además, considere filing a bug report, ya que esto no debería estar sucediendo.)

+0

Probablemente Cython en lugar de Pyrex en estos días, pero de todos modos +1 – delnan

+1

@delnan: no, Pyrex, vea su ['setup.py'] (https://github.com/leejjoon/pyregion/blob/master/setup.py) –

+0

Ah, de acuerdo, no se me ocurrió un proyecto tan pequeño como para haberlo visto días antes de que Cython reemplazara a Pyrex. – delnan

3

Instale pyrex primero y funcionará.

Haga lo siguiente: sudo pip instalar pyrex

0

me sale el mismo error utilizando Cython, pero lo resuelve por el cambio

cmdclass = {'build_ext ': build_ext }, 

a

cmdclass = {'build_ext': build_ext }, 

como puedas no aviso, carácter en blanco redundante detrás de 'build_ext '.

0

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

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

(He intentado instalar Pyrex, pero terminó con errores sobre caracteres no reconocidos en su lugar)

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

Cuestiones relacionadas