PIP non installato nella directory virtualenv


10

Sto tentando di installare django su un virtualenv già esistente.

Seguendo le istruzioni elencate sul sito Web pip-install qui , ho eseguito il seguente da SSH.

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

Tuttavia, nella parte inferiore dell'installazione, sto vedendo questo:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

Sembra che stia tentando di installarlo nella directory globale. Non ho i privilegi di sudo. Sto facendo qualcosa di sbagliato qui?

Aggiornamento: $ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games


Funziona correttamente per altri pacchetti? Hai lo stesso problema se lo usi easy_install?
Larsks,

Stesso problema con altri pacchetti. E credo che easy_install richieda sudo e verrebbe installato nella directory globale.
Luke Sapan,

No, la configurazione di virtualenv ti consente di eseguire easy_install e pip. Puoi digitare which easy_installper vedere se stai usando virtualenv o quello di sistema.
Larsks,

In realtà, sei sicuro che stai eseguendo pip dall'interno di virtualenv? Che cosa rende which pip? E vedi pipdentro myenv.env/bin/?
Larsks,

Vedo pip all'interno di myenv.env / bin /. Ho appena provato a "attivare" di nuovo il mio env, e nonostante sia in quella modalità, "quale pip" e "quale easy_install" restituiscono rispettivamente "usr / local / bin / pip" e "usr / bin / easy_install".
Luke Sapan,

Risposte:


6

Ci scusiamo per la risposta in ritardo di un anno! Ho avuto lo stesso problema e l'ho risolto, non so se hai cambiato il nome di una directory dopo aver creato l'ambiente virtuale, l'ho fatto. Se è così, ecco cosa ho fatto.

1.) il deactivatetuo v-env. Dopo la correzione è necessario riavviare v-env, quindi potrebbe anche deactivateora. destra?

2.) Ora, poiché abbiamo creato v-env in un percorso diverso, dobbiamo modificare le variabili del percorso statico in questi file.

Per far funzionare pip non è necessario farlo, ma lo faccio ancora. bin/activate, bin/activate.csh, bin/activate.fish

bin/pip, bin/pip2, bin/pip2.7

bin/easy_install, bin/easy_install2.7

3.) Per far funzionare pip, è necessario correggere l'interprete python nel file pip, anche questo ha una posizione di interprete statica impostata da virtualenv nel processo di creazione.

4.) Per far funzionare easy_install? Hai indovinato, fissa la posizione dell'interprete.

Spero che ciò abbia aiutato tutte le persone a leggere questo in futuro. Scusa OP, per essere in ritardo.


Sì, era esattamente così. Nel mio caso sono stato in grado di ricreare da zero il virtualenv e questo l'ha risolto.
Luke Sapan,

Sono contento di essere d'aiuto
Crispy

Sono così felice di trovare finalmente una risposta. Per me, usare sed nella cartella venv ha reso il lavoro molto più semplice. Qualcosa del genere grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @. fonte
Keith,

Dici "Per far funzionare pip, devi correggere l'interprete python nel file pip", dove e come viene fatto?
Dave,

3

Ho avuto lo stesso problema.

Ho eliminato l'ambiente virtuale e ne ho creato uno nuovo, che ha risolto il problema.

Probabilmente non la risposta che speravi, ma dato che è l'unica ...


1

Bene senza privilegi amministrativi sei molto limitato su ciò che sei in grado di fare. Se non ti è permesso elevarti o chiedere privilegi, il modo migliore che ho trovato per farlo sarebbe creare un altro ambiente, creare un file requisito.txt, scaricare tutti i pacchetti necessari sulla tua macchina (django) che inoltre si trova nel file dei requisiti e dovrebbe funzionare.


0

Ho avuto lo stesso problema. Nel mio caso il motivo era che l'env virtuale creato era per python2.7 (impostazione predefinita) ma stavo usando pip3 per installare un pacchetto. pip3 non era presente nel mio virtualenv quindi è diventato predefinito a quello globale. Per me la soluzione era usare

virtualenv flask --python=python3

per creare l'inv.


0

Avevo riscontrato lo stesso problema causato dalla ridenominazione dell'utente. La risposta di Crispy è assolutamente giusta. E la mia soluzione potrebbe essere più conveniente.

setps:
1. Immettere il percorso bin dell'ambiente virtuale, ad esempio cd ~/virenv_dir/bin
2. Rinominare tutti i file in questa directory utilizzando il comando sed.sed -i 's/old_name/new_name/' *


0

Nel mio caso, avevo definito due alias (per superare qualche altro problema sulla versione predefinita di Python):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

E questo stava causando gli stessi sintomi:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

La rimozione degli alias ha risolto il problema (prima o dopo aver creato virtualenv)


0

La chiamata sudo pipchiamerà pip globale e non pip nel tuo virtualenv. Attiva / lavora sul tuo ambiente, quindi chiama pipe non sudo pip, questo potrebbe risolvere il tuo problema, come ha fatto il mio.

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.