[SciPy-User] SciPy pip and PyPi

Francesc Alted faltet at pytables.org
Sat Nov 13 05:21:22 EST 2010


A Friday 12 November 2010 23:38:21 David Cournapeau escrigué:
> On Fri, Nov 12, 2010 at 12:40 AM, Martin Galpin <galpin at gmail.com> 
wrote:
> > Dear all,
> > I am attempting to install SciPy using pip and pypi into a
> > virtualenv. However, because the SciPy egg does not list NumPy as
> > as a dependency, the process cannot be automated using a pip
> > requirements file (the install fails because there is no guarantee
> > of the order pip installs packages and when installing SciPy,
> > NumPy might not be installed).
> > I have verified this is the case on both OS X and Ubuntu 10.10.
> > Can anybody suggest an alternative?
> 
> That's not possible I am afraid. Those tools are pretty limited, and
> cannot express complex dependencies: numpy is a *build* dependency of
> scipy, and scipy setup.py needs numpy to run at all. Neither
> setuptools nor pip support this concept,

Hmm, I think this is actually supported by setuptools.  I'm attaching 
some excerpts of the setup.py in PyTables for dealing with dependencies 
that you may want to use as an example:

"""
# Using ``setuptools`` enables lots of goodies, such as building eggs.
if 'FORCE_SETUPTOOLS' in os.environ:
    from setuptools import setup, find_packages
    has_setuptools = True
else:
    from distutils.core import setup
    has_setuptools = False

# The minimum required versions for dependencies
min_numpy_version = '1.4.1'
min_numexpr_version = '1.4.1'
min_cython_version = '0.13'

# Check for dependencies.
# NumPy (build req.) is absolutely needed at build time...
check_import('numpy', min_numpy_version)
# Check for numexpr (install req.) only if not using setuptools
if not has_setuptools:
    check_import('numexpr', min_numexpr_version)
[clip]

setuptools_kwargs = {}
if has_setuptools:
    # PyTables contains data files for tests.
    setuptools_kwargs['zip_safe'] = False

    # ``NumPy`` headers are needed for building the extensions, as
    # well as Cython.
    setuptools_kwargs['setup_requires'] = [
        'numpy>=%s' % min_numpy_version,
        'cython>=%s' % min_cython_version,
        ]
    # ``NumPy`` and ``Numexpr`` are absolutely required for running 
PyTables.
    setuptools_kwargs['install_requires'] = [
        'numpy>=%s' % min_numpy_version,
        'numexpr>=%s' % min_numexpr_version,
        ]
    setuptools_kwargs['extras_require'] = {
        'Numeric': ['Numeric>=24.2'],  # for ``Numeric`` support
        'netCDF': ['ScientificPython'],  # for netCDF interchange
        'numarray': ['numarray>=1.5.2'],  # for ``numarray`` support
        }
[clip]

setup(name = name,
[clip]
      **setuptools_kwargs)
"""

Hope this helps,

-- 
Francesc Alted



More information about the SciPy-User mailing list