At 01:28 PM 4/8/2009 -0700, Sridhar Ratnakumar wrote:
For example, zc.catalog declares these dependencies in its setup.py

      install_requires=['ZODB3',
                        'pytz',
                        'setuptools',
                        'zope.catalog',
                        'zope.container',
                        'zope.component',
                        'zope.i18nmessageid',
                        'zope.index>=3.5.1',
                        'zope.interface',
                        'zope.publisher',
                        'zope.schema',
                        'zope.security',
                        ],

Is it possible to reliably get this list in a custom Python code without having to parse setup.py?

Something like this should do the trick:

import tempfile, os.path
from setuptools.sandbox import run_setup

def get_requires(setup_dir, empty_tmpdir):
    tmpdir = tempfile.mkdtemp(prefix="egginfotmp-")
    run_setup(os.path.join(setup_dir,'setup.py'), ['-e', tmpdir])
    for dist in pkg_resources.find_distributions(tmpdir, True):
        return dist.requires()
    else:
        raise RuntimeError("egg_info didn't work")

You'll get back a list of pkg_resources.Requirement objects rather than strings, but you can turn them back into strings if you like.

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to