Wie installiere ich Python-Module ohne Root-Zugriff?

220

Ich nehme an einigen Universitätsklassen teil und habe ein 'Lehrkonto' erhalten, ein Schulkonto, auf das ich zugreifen kann, um meine Arbeit zu erledigen. Ich möchte meinen rechenintensiven Numpy-, Matplotlib- und Scipy-Code auf diesem Computer ausführen, kann diese Module jedoch nicht installieren, da ich kein Systemadministrator bin.

Wie kann ich die Installation durchführen?

Rishi
quelle
14
Sie können --user oder --prefix an setup.py für das Paket übergeben, das Sie installieren, um es lokal zu installieren. Siehe alertnative Installation für Python-Module
arunkumar

Antworten:

306

In den meisten Situationen besteht die beste Lösung darin, sich auf den sogenannten "User Site" -Standort zu verlassen ( Einzelheiten finden Sie im PEP ), indem Sie Folgendes ausführen:

pip install --user package_name

Unten finden Sie einen "manuellen" Weg von meiner ursprünglichen Antwort. Sie müssen ihn nicht lesen, wenn die obige Lösung für Sie funktioniert.


Mit easy_install können Sie Folgendes tun:

easy_install --prefix=$HOME/local package_name

welches in installiert wird

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

(Der 'lokale' Ordner ist ein typischer Name, den viele Leute verwenden, aber Sie können natürlich jeden Ordner angeben, in den Sie schreiben dürfen).

Sie müssen manuell erstellen

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

und fügen Sie es Ihrer PYTHONPATHUmgebungsvariablen hinzu (andernfalls beschwert sich easy_install - führen Sie den obigen Befehl übrigens einmal aus, um den richtigen Wert für XY zu finden).

Wenn Sie nicht verwenden easy_install, suchen Sie nach einer Präfixoption. In den meisten Installationsskripten können Sie eine angeben.

Mit pip können Sie verwenden:

pip install --install-option="--prefix=$HOME/local" package_name
tiho
quelle
1
was ist, wenn Python nicht über pipund easy_installverfügbar?
Girardi
Die Installation verlief einwandfrei (die pip-Methode), aber das Importieren von package_name funktioniert nicht. Muss ich einige Konfigurationen ändern / hinzufügen? auch wohin wurde die Installation kopiert (ordnerweise)?
Idoda
2
//, @AnotherDayAnotherRob, das klingt nach einer guten Frage .
Nathan Basanese
2
Es kann sinnvoll sein, die Antwort zu aktualisieren und die --userAnweisung oben zu setzen. :)
VasiliNovikov
1
@Girardi Falls Sie Python von src in ein lokales Verzeichnis / my_python / installiert haben, ist es hilfreich, zunächst pip an diesem Speicherort zu installieren mit: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - dann können Sie andere Module mit pip + Präfix installieren
teng_wenxuan
51

Keine Zugriffs- oder Installationsberechtigungen easy_install?

Anschließend können Sie eine Python-Datei virtualenv( https://pypi.python.org/pypi/virtualenv ) erstellen und das Paket in dieser virtuellen Umgebung installieren.

Das Ausführen von 4 Befehlen in der Shell reicht aus (aktuelle Version wie 16.1.0 für XXX einfügen):

$ 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

Quelle und weitere Informationen: https://virtualenv.pypa.io/en/latest/installation/

Ungeheuer
quelle
1
Diese Antwort war für mich auf einem System ohne pipInstallation hilfreich .
Dan Stowell
Ich habe eine Variante für meine lokale Python-Installation ausprobiert. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / Python
Neerav
3
Die Quelle scheint sich verschoben zu haben und das oben Genannte funktioniert nicht sofort. Die ähnlichen Anweisungen https://virtualenv.pypa.io/en/latest/installation/funktionieren aber gut :)
Andras Deak
13

Sie können easy_install ausführen, um Python-Pakete auch ohne Root-Zugriff in Ihrem Home-Verzeichnis zu installieren. Es gibt eine Standardmethode für die Verwendung von site.USER_BASE, die standardmäßig $ HOME / .local oder $ HOME / Library / Python / 2.7 / bin verwendet und standardmäßig im PYTHONPATH enthalten ist

Erstellen Sie dazu eine .pydistutils.cfg in Ihrem Home-Verzeichnis:

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

Jetzt können Sie easy_install ohne Root-Rechte ausführen:

easy_install boto

Alternativ können Sie damit auch pip ohne Root-Zugriff ausführen:

pip install boto

Das funktioniert bei mir.

Quelle aus Wesley Tanakas Blog: http://wtanaka.com/node/8095

Yusong
quelle
1
Dies funktionierte für mich ohne Root-Zugriff auf Linux-Server zu installieren. Danke Aber ich habe keine Ahnung warum es funktioniert hat. Kann irgendein Körper einen Hinweis geben?
ChathuraG
9

Wenn Sie ein distutils- setup.pySkript verwenden müssen, gibt es einige Befehlszeilenoptionen zum Erzwingen eines Installationsziels. Siehe http://docs.python.org/install/index.html#alternate-installation . Wenn sich dieses Problem wiederholt, können Sie eine Distutils-Konfigurationsdatei einrichten, siehe http://docs.python.org/install/index.html#inst-config-files .

Das Einstellen der PYTHONPATH-Variablen wird in diesem Beitrag beschrieben.

Rocksportrocker
quelle
1
Vielen Dank. Ich habe die lxmlBibliothek erfolgreich installiert mitpython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.
6

Wichtige Frage. Der Server, den ich benutze (Ubuntu 12.04) hatte easy_install3aber nicht pip3. So habe ich Pip und dann andere Pakete in meinem Home-Ordner installiert

  1. Der Administrator wurde gebeten, das Ubuntu-Paket zu installieren python3-setuptools

  2. Installierte Pip

So was:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Pip (und andere Python-Apps zum Pfad hinzufügen)

So was:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Installieren Sie das Python-Paket

so was

pip3 install --user httpie

# test httpie package
http httpbin.org
Oberst Panik
quelle
4

Ich verwende JuJu, das im Grunde genommen eine wirklich winzige Linux-Distribution (die nur den Paketmanager enthält) in Ihrem $ HOME / .juju-Verzeichnis zulässt.

Sie können Ihr benutzerdefiniertes System im Home-Verzeichnis über proot zugänglich machen und daher alle Pakete ohne Root-Rechte installieren. Es läuft ordnungsgemäß auf allen wichtigen Linux-Distributionen. Die einzige Einschränkung besteht darin, dass JuJu auf einem Linux-Kernel mit der empfohlenen Mindestversion 2.6.32 ausgeführt werden kann.

Geben Sie beispielsweise nach der Installation von JuJu zur Installation von pip Folgendes ein:

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

Installieren Sie virtualenv lokal ( Quelle der Anweisungen ):

Wichtig: Fügen Sie die aktuelle Version (wie 16.1.0 ) für XXX ein .
Überprüfen Sie den Namen der extrahierten Datei und fügen Sie sie für JJJJJ ein .

$ 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

Bevor Sie ein Paket verwenden oder installieren können, das Sie für sourceIhre virtuelle Python-Umgebung benötigen env:

$ source env/bin/activate

Verwenden Sie zum Installieren neuer Python-Pakete (wie numpy):

(env)$ pip install <package>
Niklas
quelle
Dies ist im Grunde eine aktualisierte Version der Anweisungen von enormows . Seine Anweisungen sind veraltet. Meine Bearbeitung wurde abgelehnt. Aus diesem Grund habe ich es als neue Anweisung veröffentlicht.
Niklas