2015-11-20 12 views
5

Come tutti sappiamo, Mac OS viene fornito con un proprio python preinstallato.Installazioni multiple di pitone e pip, amico, dov'è il mio sito-pacchetti?

La raccomandazione sembra essere quella di lasciarlo da solo e utilizzare homebrew per installare un nuovo python nel sistema.

Il mio problema è che dopo aver installato python (e pip) usando homebrew, pip sta installando pacchetti nei pacchetti del sito Mac OS invece dei miei. Ho confermato sto facendo funzionare il PIP "homebrew":

$ which pip 
/usr/local/bin/pip 

Ma poi quando ho Pip installare qualcosa che posso se si è installato in:

/lib/python2.7/site-packages 

Pip dovrebbe essere l'installazione a /usr/local/lib/python2.7/site-packages a meno che i' Mi manca capire qualcosa.

La cosa sorprendente è che controllando con -V produce un risultato sorprendente:

pip -V 
pip 7.1.0 from /usr/local/lib/python2.7/site-packages (python 2.7) 

Esecuzione pip list solo dopo l'esecuzione pip install non mostra i pacchetti che sono stati presumibilmente appena installati da esso, ma è andato al sbagliate site-packages .

In aggiunta a ciò, i pacchetti installati su /lib/python2.7/site-packages non vengono riconosciuti da $ PYTHONPATH e pertanto non posso utilizzarli.

Per aggiungere ancora più confusione, ho deciso di utilizzare un virtualenv, ma sono rimasto stupito dal fatto che anche usando pip con virtualenv active ho continuato a installare sul /lib/python2.7/site-packages invece che sui pacchetti del sito virtualenv.

Quindi, in qualche modo ho finito con un pip homebrew, che installa pacchetti al di fuori dei pacchetti homebrew e un interprete python che non può usare i pacchetti installati da pip.

Come si consiglia vado a trovare la causa principale e avere un'esperienza Python liscia? :)

+0

Hai fatto. venv/bin/activate' your vitualenv? – Ray

risposta

0

Penso che dopo aver attivato un virtualenv il tuo percorso python dovrebbe puntare a quella posizione del sito del pacchetto di ambienti - se non è probabilmente non attivato. Solo una volta attivato, eseguirai pip in modo che si installi nei pacchetti del sito di quel virtual env. se non è attivato, andrà in qualsiasi altro sito-pacchetti che già conosce:

  • Fase 1: creare un ENV virtuale
    • alla ... virtualenv venv
    • farlo solo una volta !
  • Fase 2: Attivare l'ENV vitual
    • qualcosa come source /venv/bin/activate
    • deve fare ogni volta che si desidera utilizzare questo ambiente virtuale
  • Fase 3: eseguire comandi pip, guardarli installa nei pacchetti del sito env virtuale!

Se si esegue il passaggio 3 prima del passaggio 2, in realtà non si utilizza l'ambiente virtuale creato, quindi tutte le scommesse sono disattivate. Questo è probabilmente il motivo per cui pip sta ancora installando la vecchia posizione.

Ora, la mia raccomandazione generale è di andare oltre e utilizzare pyenv per installare la versione specifica di python nel tuo /Users/username/.pyenv folder e abbandonare sia il pacchetto OSX predefinito che i pacchetti homebrew. È semplice e puoi controllare facilmente la versione esatta di python da utilizzare con il semplice comando di comando per modificare le versioni.

POI uso virtualenv in python2 o pyvenv se in python3 (da non confondere con pyenv) per costruire ambienti vitual con le proprie site-packages locali per memorizzare i moduli pip. Quando attivi una virtualenv, $ PYTHONPATH passerà alla posizione specifica.

Il flusso sarebbe allora:

  • Usa pyenv di abbattere e passare a una versione specifica di Python che si desidera utilizzare - homebrew sovrascrivendo e la versione OSX.
  • Crea il tuo vitrualenv. Questo creerà un cestino che si collegherà allo stack pyenv python che hai appena specificato nel passaggio precedente.
  • Attivare l'ambiente virtuale e procedere.

Completamente controlla il tuo ambiente!

Problemi correlati