On 27 April 2012 14:03, Ian Bell <ian.h.bell <at> gmail.com> wrote:
> Stefan,
>
>>
>> In any case, the new and preferred way is described here:
>>
>> http://wiki.cython.org/enhancements/distutils_preprocessing
>>
>> And, yes, it would be good to visibly present this in the documentation.
>> The build documentation is mostly ok but lacks this feature:
>>
>> http://docs.cython.org/src/userguide/source_files_and_compilation.html
>>
> The build docs are in good shape - lots of useful information, but from
> browsing the mailing lists, seems like quite a few people are having varied
> issues with PXD files and distutils. Would be great to have a (nominally)
> working example in the documentation online and/or a downloadable version.
> Also, an example of getting Cython distutils parameters would be great.
>
> Just for fun, tried a new setup.py file, like the link you recommended using
> cythonize. Works a charm. Weird. I think I am in business for now. Thanks
> for your help and patience.
>
> So it seems that cythonize does something slightly different than the Cython
> build_ext command. I suppose this shouldn't be the expected behavior?
>
> Cheers,
> Ian
>
> ##### setup2.py #######
> from distutils.core import setup
> from Cython.Build import cythonize
>
> setup(
> name = 'MyProject',
> ext_modules = cythonize(["integrate_py.py"]),
> )

Have you tried using Cython.Distutils.extension.Extension instead of
distutils' Extension class?

Interestingly, if I use Cython.Distutils.extension.Extension but leave the extension module name as example (see setup4.py below), it doesn't include the PXD file.

But if I change the module name to integrate_py in setup.py(as below), it does work and finds the PXD file properly. The file I list below for setup.py DOES work, either using

from distutils.core import Extension

or

from Cython.Distutils.extension import Extension. I would argue this is a bug, or at worst should spit out a warning at build time. It is quite unexpected behavior, especially considering the documentation of pure Python mode in the docs online.