How to install python modules without root access?
Asked Answered
A

9

234

I'm taking some university classes and have been given an 'instructional account', which is a school account I can ssh into to do work. I want to run my computationally intensive Numpy, matplotlib, scipy code on that machine, but I cannot install these modules because I am not a system administrator.

How can I do the installation?

Afeard answered 19/9, 2011 at 0:41 Comment(1)
You can pass --user or --prefix to setup.py for the package you are installing to install it locally. See alertnative installation for Python modulesBackspace
R
320

In most situations the best solution is to rely on the so-called "user site" location (see the PEP for details) by running:

pip install --user package_name

Below is a more "manual" way from my original answer, you do not need to read it if the above solution works for you.


With easy_install you can do:

easy_install --prefix=$HOME/local package_name

which will install into

$HOME/local/lib/pythonX.Y/site-packages

(the 'local' folder is a typical name many people use, but of course you may specify any folder you have permissions to write into).

You will need to manually create

$HOME/local/lib/pythonX.Y/site-packages

and add it to your PYTHONPATH environment variable (otherwise easy_install will complain -- btw run the command above once to find the correct value for X.Y).

If you are not using easy_install, look for a prefix option, most install scripts let you specify one.

With pip you can use:

pip install --install-option="--prefix=$HOME/local" package_name
Racecourse answered 19/9, 2011 at 1:4 Comment(9)
what if python does not have pip and easy_install available?Firer
Installation went just fine (the pip method), but importing package_name is not working. Do I need to change/add some configurations? also where were the installation copied to (folder wise)?Gaziantep
What if you are behind a corporate firewall that blocks internet access, and you can only copy files from a network drive?Hendecahedron
// , @AnotherDayAnotherRob, that sounds like a good question.Kiwi
What if you have say google.protobuf package installed in a directory where you don't have permissions and you want to add a module (say descriptor_pb2.py) locally. I've tried placing it in $HOME/local/lib/pythonX.Y/site-packages/google/protobuf but it doesn't work (gives import error).Haze
I doubt this will be addressed but, once I do all of these steps and I get say pandas installed, where should I save a python script that then imports pandas?Larkin
It may make sense to update the answer and put --user instruction at the top.:)Greer
this saved my time, installed new pip locally using old pip, then packages locally as well, prepended to my PATH, no need to submit CR :)Radio
@Firer In case you have installed python from src to a local dir /my_python/, it would be useful to firstly install pip in this location with: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - | /my_python/bin/python - then you can install other modules with pip + prefixEquate
I
51

No permissions to access nor install easy_install?

Then, you can create a python virtualenv (https://pypi.python.org/pypi/virtualenv) and install the package from this virtual environment.

Executing 4 commands in the shell will be enough (insert current release like 16.1.0 for X.X.X):

$ curl --location --output virtualenv-X.X.X.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xvfz virtualenv-X.X.X.tar.gz
$ python pypa-virtualenv-YYYYYY/src/virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install package_name

Source and more info: https://virtualenv.pypa.io/en/latest/installation/

Intelligent answered 19/12, 2012 at 17:59 Comment(3)
This answer was useful for me on a system with no pip installed.Meehan
I tried a variant for my local python installation. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~/Python-2.7.8/pythonOmalley
The source seem to have moved and the above doesn't work out of the box. The similar instructions at https://virtualenv.pypa.io/en/latest/installation/ work fine though:)Damp
P
13

You can run easy_install to install python packages in your home directory even without root access. There's a standard way to do this using site.USER_BASE which defaults to something like $HOME/.local or $HOME/Library/Python/2.7/bin and is included by default on the PYTHONPATH

To do this, create a .pydistutils.cfg in your home directory:

cat > $HOME/.pydistutils.cfg <<EOF
[install]
user=1
EOF

Now you can run easy_install without root privileges:

easy_install boto

Alternatively, this also lets you run pip without root access:

pip install boto

This works for me.

Source from Wesley Tanaka's blog : http://wtanaka.com/node/8095

Putdown answered 1/11, 2015 at 16:48 Comment(1)
This worked for me to install without root access on linux server. Thank you But I don't have any idea why it worked. Can any body give a hint ?Amick
S
9

If you have to use a distutils setup.py script, there are some commandline options for forcing an installation destination. See http://docs.python.org/install/index.html#alternate-installation. If this problem repeats, you can setup a distutils configuration file, see http://docs.python.org/install/index.html#inst-config-files.

Setting the PYTHONPATH variable is described in tihos post.

Squeamish answered 19/9, 2011 at 10:51 Comment(1)
Thanks a lot. I've successfully installed lxml library using python <lxml_distrib_dir>/setup.py install --home=<dir>Lowbred
F
8

Important question. The server I use (Ubuntu 12.04) had easy_install3 but not pip3. This is how I installed Pip and then other packages to my home folder

  1. Asked admin to install Ubuntu package python3-setuptools

  2. Installed pip

Like this:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Add Pip (and other Python apps to path)

Like this:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Install Python package

like this

pip3 install --user httpie

# test httpie package
http httpbin.org
Felipe answered 9/5, 2014 at 22:34 Comment(0)
B
5

The best and easiest way is this command:

pip install --user package_name

http://www.lleess.com/2013/05/how-to-install-python-modules-without.html#.WQrgubyGOnc

Broil answered 4/5, 2017 at 8:19 Comment(1)
And what do I do with the path then?Ludwigshafen
Z
4

I use JuJu which basically allows to have a really tiny linux distribution (containing just the package manager) inside your $HOME/.juju directory.

It allows to have your custom system inside the home directory accessible via proot and, therefore, you can install any packages without root privileges. It will run properly to all the major linux distributions, the only limitation is that JuJu can run on linux kernel with minimum reccomended version 2.6.32.

For instance, after installed JuJu to install pip just type the following:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip
Zebra answered 2/11, 2014 at 18:21 Comment(0)
D
1

Install virtualenv locally (source of instructions):

Important: Insert the current release (like 16.1.0) for X.X.X.
Check the name of the extracted file and insert it for YYYYY.

$ curl -L -o virtualenv.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xfz virtualenv.tar.gz
$ python pypa-virtualenv-YYYYY/src/virtualenv.py env

Before you can use or install any package you need to source your virtual Python environment env:

$ source env/bin/activate

To install new python packages (like numpy), use:

(env)$ pip install <package>
Dendro answered 22/5, 2019 at 11:3 Comment(1)
This is basically an updated version of tremendows instructions. His instructions are outdated. My edit was rejected. Because of that I posted it as a new instruction.Dendro
H
1

Install Python package without Admin rights

import sys

!{sys.executable} -m pip install package_name

Example

import sys

!{sys.executable} -m pip install kivy

Reference: https://docs.python.org/3.4/library/sys.html#sys.executable

Hypsometry answered 23/11, 2020 at 8:9 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.