[Distutils] setuptools docs: Declaring Dependencies
Phillip J. Eby
pje at telecommunity.com
Wed Sep 21 22:24:42 CEST 2005
At 03:11 PM 9/21/2005 -0500, Ian Bicking wrote:
>I'm reading through the documentation some...
>
>Regarding this:
>
> > Note, by the way, that if you declare your dependencies in setup.py,
> > you do not need to use the require() function in your scripts or
> > modules, as long as you either install the project or use setup.py
> > develop to do development work on it. (See "Development Mode" below
> > for more details on using setup.py develop.)
>
>I don't think this is quite true. In particular, I've noticed if you
>install a package A --multi-version, it fulfills the requirement for A.
> And if you have a package B that requires A, when you require('B')
>then A will be loaded (added to sys.path, more technically). But if B
>is *not* installed --multi-version you can start using it without
>require()ing it, and A won't have been loaded.
What I was trying to say was that scripts installed by easy_install or
"setup develop" do not require any require()s, as that is handled by the
generated wrapper.
>Given this, I feel like I need to do the basic require()s in my
>__init__.py.
I'm not positive that's true. If you install B without --multi-version, in
principle it should de-multi-versionize A as well. (At least, that's what
I'd expect it to do; I'm not 100% sure if it does. I know for sure it'll
do it if "A" isn't installed when you install "B".) That doesn't mean you
can't go back and re-MV-ize "A", but there are always ways for people to
break things.
A full package management tool layered over setuptools should take care of
things like warning you that you're going to deactivate something needed by
something else.
More information about the Distutils-SIG
mailing list