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.