[Distutils] Making setuptools play nicer with virtualenv
Ian Bicking
ianb at colorstudy.com
Wed Apr 2 18:06:04 CEST 2008
Gael Varoquaux wrote:
> I have just out-clevered myself using setuptools and virtualenv:
>
> * install foo using "python setup.py develop" (foo being ipython).
>
> * download some module bar you want to work on in an isolated environment
>
> * create this isolated environment using "virtualenv bar"
>
> * in the isolated environment "python setup.py develop" the bar module.
>
> * still in the isolated environment, try to import bar in a script
> installed by foo (aka ipython)
>
> --> fails because foo uses the system python, and virtualenv wants
> you to use its own python
>
> One very easy solution to make this work is to have the setuptools
> generated scripts use, under unices, "#!/usr/bin/env python" rather than
> "#!/usr/bin/python". This seems to me like a good solution, in general,
> to follow the user's expectations.
>
> Is this a change that would be possible?
Sometimes you want to inherit the environment you've activated, but in
my experience usually this isn't what you'll want. I find it easier to
just reinstall any tools (like ipython, nose, etc) that I want to use in
the virtualenv.
In an ideal situation they could share eggs with the system packages,
but this only kind of works. (Sometimes, for reasons I don't always
understand, easy_install will find and install globally-installed
packages, creating an executable bound to the virtualenv.)
Ian
More information about the Distutils-SIG
mailing list