Comment installer des modules python sans accès root?

220

Je prends des cours universitaires et j'ai reçu un «compte pédagogique», qui est un compte scolaire dans lequel je peux accéder pour travailler. Je veux exécuter mon code Numpy, matplotlib, scipy intensif en calcul sur cette machine, mais je ne peux pas installer ces modules car je ne suis pas administrateur système.

Comment puis-je faire l'installation?

Rishi
la source
14
Vous pouvez transmettre --user ou --prefix à setup.py pour le package que vous installez afin de l'installer localement. Voir l' installation d'alerte pour les modules Python
arunkumar

Réponses:

306

Dans la plupart des situations, la meilleure solution consiste à s'appuyer sur l'emplacement dit du "site utilisateur" (voir le PEP pour plus de détails) en exécutant:

pip install --user package_name

Vous trouverez ci-dessous un moyen plus "manuel" de ma réponse d'origine, vous n'avez pas besoin de le lire si la solution ci-dessus fonctionne pour vous.


Avec easy_install, vous pouvez faire:

easy_install --prefix=$HOME/local package_name

qui s'installera dans

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

(le dossier «local» est un nom typique utilisé par de nombreuses personnes, mais bien sûr, vous pouvez spécifier n'importe quel dossier dans lequel vous êtes autorisé à écrire).

Vous devrez créer manuellement

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

et ajoutez-le à votre PYTHONPATH variable d'environnement (sinon easy_install se plaindra - btw exécutez la commande ci-dessus une fois pour trouver la valeur correcte pour XY).

Si vous n'utilisez pas easy_install , recherchez une option de préfixe, la plupart des scripts d'installation vous permettent d'en spécifier une.

Avec pip, vous pouvez utiliser:

pip install --install-option="--prefix=$HOME/local" package_name
Tiho
la source
1
que faire si python n'a pas pipet n'est pas easy_installdisponible?
Girardi
L'installation s'est très bien passée (la méthode pip), mais l'importation de nom_package ne fonctionne pas. Dois-je changer / ajouter des configurations? également où l'installation a-t-elle été copiée (par dossier)?
idoda
2
//, @AnotherDayAnotherRob, cela ressemble à une bonne question .
Nathan Basanese
2
Il peut être judicieux de mettre à jour la réponse et de mettre les --userinstructions en haut. :)
VasiliNovikov
1
@Girardi Si vous avez installé python de src dans un répertoire local / my_python /, il serait utile d'installer d'abord pip à cet emplacement avec: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - alors vous pouvez installer d'autres modules avec le préfixe pip +
teng_wenxuan
51

Aucune autorisation d'accès ni d'installation easy_install?

Ensuite, vous pouvez créer un python virtualenv( https://pypi.python.org/pypi/virtualenv ) et installer le package à partir de cet environnement virtuel.

L'exécution de 4 commandes dans le shell sera suffisante (insérer la version actuelle comme 16.1.0 pour XXX):

$ 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 et plus d'informations: https://virtualenv.pypa.io/en/latest/installation/

tremblants
la source
1
Cette réponse m'a été utile sur un système sans pipinstallé.
Dan Stowell
J'ai essayé une variante pour mon installation locale de python. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav
3
La source semble avoir bougé et ce qui précède ne fonctionne pas hors de la boîte. Les instructions similaires https://virtualenv.pypa.io/en/latest/installation/fonctionnent bien cependant :)
Andras Deak
13

Vous pouvez exécuter easy_install pour installer des packages python dans votre répertoire personnel même sans accès root. Il existe une façon standard de le faire en utilisant site.USER_BASE qui prend par défaut quelque chose comme $ HOME / .local ou $ HOME / Library / Python / 2.7 / bin et est inclus par défaut sur le PYTHONPATH

Pour ce faire, créez un .pydistutils.cfg dans votre répertoire personnel:

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

Vous pouvez maintenant exécuter easy_install sans privilèges root:

easy_install boto

Alternativement, cela vous permet également d'exécuter pip sans accès root:

pip install boto

Cela fonctionne pour moi.

Source du blog de Wesley Tanaka: http://wtanaka.com/node/8095

yusong
la source
1
Cela a fonctionné pour moi d'installer sans accès root sur le serveur Linux. Merci mais je n'ai aucune idée de pourquoi cela a fonctionné. Un corps peut-il donner un indice?
ChathuraG
9

Si vous devez utiliser un setup.pyscript distutils , il existe des options de ligne de commande pour forcer une destination d'installation. Voir http://docs.python.org/install/index.html#alternate-installation . Si ce problème se répète, vous pouvez installer un fichier de configuration de distutils, voir http://docs.python.org/install/index.html#inst-config-files .

La définition de la variable PYTHONPATH est décrite dans tihos post.

rockportrocker
la source
1
Merci beaucoup. J'ai installé la lxmlbibliothèque avec succès en utilisantpython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.
6

Question importante. Le serveur que j'utilise (Ubuntu 12.04) avait easy_install3mais pas pip3. Voici comment j'ai installé Pip puis d'autres packages dans mon dossier personnel

  1. Administrateur invité à installer le package Ubuntu python3-setuptools

  2. Pip installé

Comme ça:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Ajouter Pip (et d'autres applications Python au chemin)

Comme ça:

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

comme ça

pip3 install --user httpie

# test httpie package
http httpbin.org
Colonel Panic
la source
4

J'utilise JuJu qui permet essentiellement d'avoir une très petite distribution Linux (contenant uniquement le gestionnaire de paquets) dans votre répertoire $ HOME / .juju.

Il permet d'avoir votre système personnalisé à l'intérieur du répertoire personnel accessible via proot et, par conséquent, vous pouvez installer tous les packages sans privilèges root. Il fonctionnera correctement pour toutes les principales distributions Linux, la seule limitation est que JuJu peut fonctionner sur le noyau Linux avec la version 2.6.32 minimale recommandée.

Par exemple, après avoir installé JuJu pour installer pip, tapez simplement ce qui suit:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip
user967489
la source
1

Installez virtualenv localement ( source d'instructions ):

Important: insérez la version actuelle (comme 16.1.0 ) pour XXX .
Vérifiez le nom du fichier extrait et insérez-le pour 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

Avant de pouvoir utiliser ou installer tout package dont vous avez besoin dans sourcevotre environnement virtuel Python env:

$ source env/bin/activate

Pour installer de nouveaux packages python (comme numpy), utilisez:

(env)$ pip install <package>
Niklas
la source
Il s'agit essentiellement d'une version mise à jour des instructions de tremendows . Ses instructions sont dépassées. Ma modification a été rejetée. Pour cette raison, je l'ai affiché comme une nouvelle instruction.
Niklas