Provare a rimuovere o rinominare il file .pydistutils.cfg nella propria directory home, ad es. rinominando con mv ~/.pydistutils.cfg ~/oldpydistutils.cfg
Sto mettendo una risposta dettagliata qui per aiutare gli altri, ma il credito originale va a this answer. Se sai che cosa specificamente in .pydistutils.cfg stava causando il problema, fammi sapere!
Avevo lo stesso problema: i miei ambienti virtuali sono stati creati senza una copia locale di pip, sebbene avessero una copia locale di python. Ciò significava che l'utilizzo di $ pip
dall'ambiente virtuale installato nella posizione globale del pacchetto e non era visibile al python dell'ambiente.
Come ho diagnosticato questo sulla mia macchina:
- creo un virtualenvironment con
$ virtualenv env
- Attivato l'ambiente virtuale con
$ source env/bin/activate
- Controllato posizione pitone: correre
(env)$ which python
con uscita /Users/<username>/env/bin/python
(come previsto)
- Posizione pip verificata: corsa
(env)$ which pip
con uscita /usr/local/bin/pip
(non prevista)
per controllare dove i nostri pacchetti sono in corso, possiamo provare a installare un pacchetto in un ambiente virtuale:
- tenta di installare un pacchetto:
(env)$ pip install HTTPServer
che riesce
- provare a eseguire il pacchetto:
(env)$ python -m HTTPServer
che non riesce con l'errore /Users/emunsing/env/bin/python: No module named HTTPServer
- di controllare due volte, provare a installare di nuovo:
(env)$ pip install HTTPServer
che produce Requirement already satisfied (use --upgrade to upgrade): HTTPServer in /usr/local/lib/python2.7/site-packages
duplice controllo, si vede che non c'è Pip nella cartella/bin del ambiente:
$ ls env/bin activate activate.fish python python2 activate.csh activate_this.py python-config python2.7
E così mentre il sistema trova la versione di Python locale, non riesce a trovare un pip locale da utilizzare e traverse il $ PATH. Finì per usare pip da/usr/local/bin, lasciandomi incapace di installare pacchetti localmente nell'ambiente virtuale.
Ecco cosa ho provato: - reinstallazione di pitone brew uninstall python
seguito da brew upgrade
e brew install python --build-from-source
- Installazione pip using the get-pip.py command as described in the Pip documentation
Ecco quello che ho escluso: - non stavo usando sudo pip ...
which caused similar problems in this other question e non l'ho fatto in qualsiasi tempo su questa installazione Python/pip - Il mio ambiente virtuale non ha mostrato un'installazione locale di pip, come era il caso in queste domande simili: This one for Windows, This one for Mac OS X.
In definitiva, ho trovato che l'eliminazione del file ~/.pydistutils.cfg
risolveva il problema, consentendo ambienti virtuali freschi con un proprio pip locale.Il contenuto del mio file ~/.pydistutils.cfg
erano:
[global]
verbose=1
[install]
install-scripts=$HOME/bin
[easy_install]
install-scripts=$HOME/bin
semplicemente rinominando il file ~/.pydistutils.cfg
sembra risolvere il problema: sembra che, anche se il file è stato creato con l'installazione homebrew, some settings in this file may be incompatible with virtualenv. Durante la rimozione di questo file non ha avuto effetti negativi sul mio sistema, potrebbe essere necessario utilizzare il flag --user
quando si installano pacchetti con pip nell'ambiente globale (ad esempio $ pip install --user HTTPServer
). Qui ci sono più details on .pydistutils.cfg se vuoi lavorare su misura per le tue esigenze.
Hai usato 'sudo' durante l'installazione di' virtualenv'? Forse è stato installato come pacchetto privato dell'utente in qualche modo e questo sta causando i problemi. (Come non avere ovunque i binari sono posizionati durante l'installazione su 'PATH', ecc.) – millimoose
@millimoose Ho provato entrambi senza' sudo' e con esso, il risultato è lo stesso. È improbabile il problema dei privilegi, in quanto è possibile utilizzare 'virtualenv.py' [localmente dall'origine] (https://virtualenv.pypa.io/en/latest/installation.html). Anche l'uso di 'virtualenv.py' da tarball non riesce a spedire' pip'. – mikeonly