[Cython] setup.py refusing to run cython

Stefan Behnel stefan_ml at behnel.de
Wed Jun 15 09:18:45 CEST 2011


Lisandro Dalcin, 14.06.2011 21:39:
> On 14 June 2011 16:20, Nathaniel Smith wrote:
>> Hello Cython folks,
>>
>> This message (see below) is the second report I've gotten of a very
>> strange build problem with a cython module. I'm just using the
>> standard 'from Cython.Distutils import build_ext', 'cmdclass =
>> {"build_ext": build_ext}' incantation, but for some reason setup.py is
>> attempting to just run gcc directly without calling cython first to
>> generate the .c file.
>>
>> You can see the setup.py here:
>>   https://code.google.com/p/scikits-sparse/source/browse/setup.py?name=scikits.sparse-0.1
>>
>> Anyone have any ideas?
>
> Your setup.py is mixing setuptools and Cython.Distutils. Both are
> monkeypatching distutils, and in general that's a very bad idea.

Specifically, "setuptools" checks the list of source files and when it sees 
a .pyx extension, it checks if Pyrex (!) is installed. If not, which is 
rather unlikely for Cython users, it changes the file extension to ".c", 
thus preventing Cython from compiling it.

There are two ways around this. The ugly way is to put a fake Pyrex into 
sys.path during installation, e.g.

https://github.com/lxml/lxml/tree/master/fake_pyrex

A better way is to switch from "setuptools" to "distribute".

Stefan


More information about the cython-devel mailing list