Come installare i moduli Python senza accesso root?


220

Sto prendendo alcune lezioni universitarie e mi è stato dato un 'account didattico', che è un account scolastico in cui posso fare un lavoro. Voglio eseguire il mio codice Numpy, matplotlib, scipy intensivo dal punto di vista computazionale su quella macchina, ma non posso installare questi moduli perché non sono un amministratore di sistema.

Come posso fare l'installazione?


14
È possibile passare --user o --prefix a setup.py per il pacchetto che si sta installando per installarlo localmente. Vedi l'installazione di alertnative per i moduli Python
arunkumar

Risposte:


306

Nella maggior parte dei casi la soluzione migliore è fare affidamento sulla posizione del cosiddetto "sito dell'utente" (vedere PEP per i dettagli) eseguendo:

pip install --user package_name

Di seguito è riportato un modo più "manuale" della mia risposta originale, non è necessario leggerlo se la soluzione di cui sopra funziona per te.


Con easy_install puoi fare:

easy_install --prefix=$HOME/local package_name

che verrà installato in

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

(la cartella "locale" è un nome tipico utilizzato da molte persone, ma ovviamente puoi specificare qualsiasi cartella in cui hai le autorizzazioni per scrivere).

Sarà necessario creare manualmente

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

e aggiungilo alla tua PYTHONPATHvariabile d'ambiente (altrimenti easy_install si lamenterà - btw esegui il comando sopra una volta per trovare il valore corretto per XY).

Se non si utilizza easy_install, cercare un'opzione di prefisso, la maggior parte degli script di installazione consente di specificarne uno.

Con pip puoi usare:

pip install --install-option="--prefix=$HOME/local" package_name

1
cosa succede se python non ha pipe easy_installdisponibile?
Girardi,

L'installazione è andata bene (il metodo pip), ma l'importazione nome_pacchetto non funziona. Devo modificare / aggiungere alcune configurazioni? anche dove è stata copiata l'installazione (per quanto riguarda le cartelle)?
idoda,

2
//, @AnotherDayAnotherRob, sembra una buona domanda .
Nathan Basanese

2
Potrebbe avere senso aggiornare la risposta e mettere le --useristruzioni in alto. :)
VasiliNovikov

1
@Girardi Se hai installato python da src in una directory locale / my_python /, sarebbe utile installare pip in questa posizione con: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - quindi puoi installare altri moduli con pip + prefisso
teng_wenxuan

51

Nessuna autorizzazione per accedere o installare easy_install?

Quindi, è possibile creare un python virtualenv( https://pypi.python.org/pypi/virtualenv ) e installare il pacchetto da questo ambiente virtuale.

L'esecuzione di 4 comandi nella shell sarà sufficiente (inserire la versione corrente come 16.1.0 per 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

Fonte e maggiori informazioni: https://virtualenv.pypa.io/en/latest/installation/


1
Questa risposta mi è stata utile su un sistema senza pipinstallato.
Dan Stowell,

Ho provato una variante per la mia installazione di Python locale. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav

3
La fonte sembra essersi spostata e quanto sopra non funziona immediatamente. Le istruzioni simili https://virtualenv.pypa.io/en/latest/installation/funzionano bene però :)
Andras Deak

13

Puoi eseguire easy_install per installare i pacchetti python nella tua home directory anche senza accesso root. Esiste un modo standard per farlo utilizzando site.USER_BASE che per impostazione predefinita è $ HOME / .local o $ HOME / Library / Python / 2.7 / bin ed è incluso di default nel PYTHONPATH

Per fare ciò, crea un .pydistutils.cfg nella tua home directory:

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

Ora puoi eseguire easy_install senza i privilegi di root:

easy_install boto

In alternativa, ciò consente anche di eseguire pip senza accesso root:

pip install boto

Questo funziona per me.

Fonte dal blog di Wesley Tanaka: http://wtanaka.com/node/8095


1
Questo ha funzionato per me per l'installazione senza accesso root sul server Linux. Grazie Ma non ho idea del perché abbia funzionato. Qualcuno può dare un suggerimento?
ChathuraG,

9

Se devi usare uno setup.pyscript distutils , ci sono alcune opzioni da riga di comando per forzare una destinazione di installazione. Vedi http://docs.python.org/install/index.html#alternate-installation . Se questo problema si ripete, puoi impostare un file di configurazione distutils, vedi http://docs.python.org/install/index.html#inst-config-files .

L'impostazione della variabile PYTHONPATH è descritta in tihos post.


1
Molte grazie. Ho installato correttamente la lxmllibreria utilizzandopython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.

6

Domanda importante. Il server che uso (Ubuntu 12.04) aveva easy_install3ma non pip3. Ecco come ho installato Pip e altri pacchetti nella mia cartella home

  1. Ha chiesto all'amministratore di installare il pacchetto Ubuntu python3-setuptools

  2. Pip installato

Come questo:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Aggiungi Pip (e altre app Python al percorso)

Come questo:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Installa il pacchetto Python

come questo

pip3 install --user httpie

# test httpie package
http httpbin.org

4

Uso JuJu che sostanzialmente permette di avere una distribuzione linux davvero piccola (contenente solo il gestore dei pacchetti) all'interno della directory $ HOME / .juju.

Permette di avere il proprio sistema personalizzato all'interno della home directory accessibile tramite proot e, quindi, è possibile installare qualsiasi pacchetto senza i privilegi di root. Funzionerà correttamente con tutte le principali distribuzioni di Linux, l'unica limitazione è che JuJu può funzionare su kernel Linux con la versione minima consigliata 2.6.32.

Ad esempio, dopo l'installazione di JuJu per installare pip basta digitare quanto segue:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip


1

Installa virtualenv localmente ( fonte di istruzioni ):

Importante: inserisci la versione corrente (come 16.1.0 ) per XXX .
Controlla il nome del file estratto e inseriscilo per AAAA .

$ 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

Prima di poter utilizzare o installare qualsiasi pacchetto necessario per il sourcetuo ambiente virtuale Python env:

$ source env/bin/activate

Per installare nuovi pacchetti python (come numpy), usare:

(env)$ pip install <package>

Questa è fondamentalmente una versione aggiornata delle istruzioni tremendows . Le sue istruzioni sono obsolete. La mia modifica è stata rifiutata. Per questo motivo l'ho pubblicato come una nuova istruzione.
Niklas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.