[Distutils] dependencies, pip and non-PyPI-hosted packages

Ernesto Posse eposse at gmail.com
Wed Apr 27 01:45:33 CEST 2011


On Tue, Apr 26, 2011 at 7:30 PM, Tres Seaver <tseaver at palladion.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 04/26/2011 12:02 PM, Ernesto Posse wrote:
>> On Sat, Apr 23, 2011 at 3:12 PM, Carl Meyer <carl at oddbird.net> wrote:
>>>
>>>
>>> On 04/23/2011 02:00 PM, P.J. Eby wrote:
>>>> At 04:54 PM 4/22/2011 -0500, Carl Meyer wrote:
>>>>> No, it is calling the distribute setup. If you look at how your package
>>>>> is installed, you'll find it in an egg - that's a sure sign of
>>>>> setuptools/distribute. It's just that "python setup.py install" does not
>>>>> handle dependencies, even with setuptools/distribute.
>>>>
>>>> Uh, yes it does, actually.  (At least with setuptools, it does; don't
>>>> know about distribute.)
>>>
>>> Erp. Yeah, you're right; just verified that it works fine with both
>>> setuptools and distribute. Dunno where I got that idea.
>>>
>>> Carl
>>
>>
>> I'm confused now. I have tried both with setuptools alone (using
>> ez_setup.py instead of distribute_setup.py) and distribute, and it
>> doesn't work with distribute alone for me: it doesn't install the
>> dependencies and gives me those warnings about 'install_requires' not
>> being recognized.
>>
>> Any ideas about what could be wrong?
>
> How are you invoking setup?  Should be something like:
>
>  from setuptools import setup
>
>  setup(name='your.package',
>        ...
>        install_requires=['other.packaage'],
>       )
>

The version using distribute (which doesn't get the dependencies and
looks as if it was calling the distutils setup) is this:

# Begin of setup.py with distribute

from distribute_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages

setup(name="project3",...,
install_requires=['project1','project2'],...,dependency_links=['http://my.host.org/repository/'],...)

# End of setup.py with distribute

The version that uses only setuptools and not distribute (and does
pick the dependencies) is as follows:

# Begin of setup.py with setuptools

from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages

setup(name="project3",...,
install_requires=['project1','project2'],...,dependency_links=['http://my.host.org/repository/'],...)

# End of setup.py with setuptools

The only difference is using ez_setup instead of distribute_setup (the
MANIFEST.in file is updated accordingly).

I have tried both in "clean" enviroments, removing both setuptools and
distribute. Of course, if I do use pip instead of "python setup
install" it works just fine.





> Tres.
> - --
> ===================================================================
> Tres Seaver          +1 540-429-0999          tseaver at palladion.com
> Palladion Software   "Excellence by Design"    http://palladion.com
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk23VXsACgkQ+gerLs4ltQ5O6gCfd8WzYUb6+bWlGvPC/ZUsfcHu
> NtIAn1pFAvWtvTV8Slap6Iopl2sT/5UD
> =Hi4F
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> http://mail.python.org/mailman/listinfo/distutils-sig
>



-- 
Ernesto Posse

Modelling and Analysis in Software Engineering
School of Computing
Queen's University - Kingston, Ontario, Canada


More information about the Distutils-SIG mailing list