[Distutils] Finding dependencies and Limiting download

Phillip J. Eby pje at telecommunity.com
Wed Mar 15 20:33:47 CET 2006


At 10:41 AM 3/15/2006 -0600, Ian Bicking wrote:
>Phillip J. Eby wrote:
>>At 10:31 AM 3/15/2006 -0600, Ian Bicking wrote:
>>
>>>Phillip J. Eby wrote:
>>>
>>>>That's because you're using 'install' rather than 'bdist_rpm'.  If for 
>>>>some reason you can't use bdist_rpm, you should use the 
>>>>--single-version-externally-managed option to the 'install' command, 
>>>>which tells easy_install that you're building a system package, so it 
>>>>won't try to do dependencies and it won't build an egg file or 
>>>>directory.  Instead, it will install packages in the "traditional" way, 
>>>>with the addition of a .egg-info/ directory that contains the package's 
>>>>metadata so it will still work correctly at runtime.
>>>
>>>
>>>One thing that came up is that --single-version-... doesn't seem to work 
>>>with Paste's namespace packages.
>>
>>How so?
>
>Well, I should say, it *works*, but as RPMs it doesn't work, because they 
>all write to the same __init__.py.  They all write the same content to 
>__init__.py, but RPM doesn't like that.

Well, you can work around this, but it's a pain because it makes it 
impossible for you to use setup.py develop.  What you do is delete the 
__init__.py from all the packages, except for a special extra project that 
includes only the __init__.py.  Then you make all the packages depend on 
that one.  (And each package with a missing __init__ needs to have the 
package name explicitly listed in setup(), since find_packages() won't see 
it's there otherwise.)

At that point, setuptools will add automatically-created __init__.py files 
into any eggs it makes, but it will not include them in 
--single-version-externally-managed installs.

The downside, however, is that it makes "setup.py develop" useless for the 
original source packages.

IOW, right now there isn't a good solution for using namespace packages 
with system packagers that use --single-version-externally-managed, and 
which don't accept any files in common between different system packages.

Ideas for solutions are welcome.  :)



More information about the Distutils-SIG mailing list