Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Ian Bell <ian.h.bell <at> gmail.com>
Subject: Re: Building distutils setup.py to find PXD files for Pure Python file
Newsgroups: gmane.comp.python.cython.user
Date: Sunday 29th April 2012 00:06:45 UTC (over 4 years ago)
On Sun, Apr 29, 2012 at 12:20 AM, mark florisson
wrote:

> On 27 April 2012 14:03, Ian Bell  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.

#### setup.py #####
from distutils.core import setup,Extension
from Cython.Distutils import build_ext

#Note: the name of the module MUST be the same as the name of the pure
Python file
ext_modules = [Extension("integrate_py", ["integrate_py.py"])]

setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = ext_modules
)

#### setup4.py #####

#NB: This code doesn't include the PXD properly
from distutils.core import setup
from Cython.Distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension("example", ["integrate_py.py"])]

setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = ext_modules
)
 
CD: 3ms