Using virtualenv to bypass sudoer issues

Jussi Piitulainen jpiitula at ling.helsinki.fi
Sat Feb 8 09:29:40 EST 2014


Glenn Hutchings writes:

> On 06/02/14 17:32, Jean-Michel Pichavant wrote:
> 
>  > Assuming I have a debian workstation for which I don't have any
>  > sudo rights, in order to be able to install / remove python
>  > packages, should I be using virtualenv ? Is it a suited solution
>  > ?
> 
> It depends on whether you need to share the installation with anyone
> else.  If not, you could also install packages using:
> 
>      python setup.py install --user
> 
> This will install in your home directory, in the '.local'
> subdirectory. And to run any scripts that get installed, add
> ~/.local/bin to your PATH.

I've used this recently. There's a catch: setup.py requires
setuptools, which also is not in the standard library and cannot be
installed this way unless it has already been installed. There's a
solution: there's a special ez_setup.py for installing setuptools.

With --user, both `python setup.py install' and `python ez_setup.py'
install in site.USER_BASE, which is ~/.local for me; site is in
standard library; the python interpreter determines the version of
python for which the installation is done, so I actually ran these:

$ python3 ez_setup.py --user
$ cd openpyxl-1.8.1
$ python3 setup.py install --user

These installed "eggs" in ~/.local/lib/python3.2/site-packages/, and
in ~/.local/bin a couple of scripts called easy_install, which I
consider poor names to have on my PATH, assuming they are specific to
Python (so I don't ~/.local/bin on my PATH).

Try to import setuptools to see if you have setuptools already. (On
one system, my 2.7 had them, but 3 didn't.)

The nice thing about --user is that the python3 interpreter knows to
add eggs from this location to its sys.path without any further
hassle. There are other options (--home, --prefix) for greater
control.

I chased the links from <http://docs.python.org/3/install/index.html>
and <http://pypi.python.org> to learn all this and find the tools.



More information about the Python-list mailing list