[Distutils] development egg and --find-links easy_install option

P.J. Eby pje at telecommunity.com
Sun May 23 00:01:25 CEST 2010


At 10:39 PM 5/22/2010 +0200, Manlio Perillo wrote:
>The trivial solution is of course to not use "develop" command, and to
>build a normal egg.

Right. The slightly-less-trivial version is to make sure your source 
is in subversion, and add svn: links to your --find-links.


>If `-maxd` will make the B.egg-info file relative, then all I need to do
>is to `python setup.py develop` inside A directory, and B package should
>be correctly available.
>
>
>Is this possible?

The -a in -maxd means that you must have either a source distribution 
(e.g. an sdist .tgz, svn: link, etc.) or an .egg.  It cannot do 
.egg-info at the moment (although when it grows PEP 376 support in 
0.7 it probably will).

The easiest way to do this would be to add something like:

   svn://myprivateserver/svndir/projectname/trunk#egg=projectname-dev

To your --find-links, and set your requirements to 
"projectname>=NN.NN,==dev", where NN.NN is the version you actually 
need, and the ==dev part allows it to pull the version from SVN and install it.

(Of course, if you don't have or use svn, this doesn't work; at the 
moment there isn't support for adding new URL protocols to 
easy_install, although it's on my list for 0.7.)

If this way doesn't work, you'll need to either use sdist, or make 
sure you do an egg install of your local packages before attempting 
to build a release.

Btw, there's still one MORE way to do this:

    easy_install -maxd targetdir sourcedir1 sourcedir2 ...

Where sourcedir1, sourcedir2, etc. are local paths to project 
directories containing setup.py files.  They'll all be built eggs and 
put in the targetdir.

(If you do this, however, you should list the dependencies *first*, 
rather than last, otherwise it will not be able to resolve them, if 
you are still only using 'develop' installs there.)



More information about the Distutils-SIG mailing list