pip non funziona con l'installazione di hombrew python 2.7


15

Ho installato Python usando homebrew e non posso richiamare pip dalla bash. Ho provato a modificare il mio .bash_profile per includere / usr / local / bin / python e / usr local / share / python inutilmente.

Quando uso il comando bash:

find / -name 'pip'

Gli unici risultati che ottengo sono:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip

Nessuno dei quali è un eseguibile.

Non so davvero dove puntare il mio $ PATH perché non riesco a trovare l'eseguibile pip. Quando apro

/usr/local/lib/python2.7/site-packages/pip

o

/usr/local/Cellar/python/2.7.9/libexec/pip/pip

Trovo i seguenti file:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models

Nessuno dei quali è un eseguibile.

Gradirei l'aiuto di chiunque abbia più esperienza di me.

Modifica: ho provato i passaggi suggeriti da Marco:

Ecco i risultati dei passaggi:

  1. echo $ PATH mostra alcune directory: / usr / local / bin: / usr / local / mysql / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / texbin: / opt / X11 / bin: / usr / local / mysql / bin

  2. quale -a python restituisce: / usr / local / bin / python / usr / local / bin / python

non viene restituito nulla per cui -a pip

  1. quale python restituisce: / usr / local / bin / python

non viene restituito nulla per quale pip

  1. ls -l $ (quale python) restituisce una singola directory: lrwxr-xr-x 1 Ivan admin 33 17 maggio 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ pitone

ls -l $ (quale pip) restituisce diversi, inclusi i file Python che ho mostrato nel mio post originale

Risposte:


19

In genere, homebrewinstallerà un formulain /usr/local/Cellar/formulae quindi inserirà un collegamento in /usr/local/bin/formula.

Per utilizzare le tue formule installate, assicurati che /usr/local/binsia nel tuo $PATH. Mostra il tuo $PATHdigitando

echo $PATH

Se /usr/local/bin non è nel tuo $PATH, metti questa riga alla fine del tuo ~/.profilefile.

export PATH="/usr/local/bin:$PATH"

Ora controlla cosa pythonssi trova sul tuo OSX digitando:

which -a python

Dovrebbe esserci un pitone trovato su /usr/bin/ (il pitone Apple) e uno su /usr/local/bin/cui è il pitone Homebrew.

which python

ti mostrerà quale pitone si trova per primo nel tuo $PATH e verrà eseguito quando invocherai python.

Se vuoi sapere dove si trova l'eseguibile, mostralo digitando

ls -l $(which python)

Questo potrebbe apparire così: lrwxr-xr-x 1 root wheel 68 7 Mai 13:22 python -> / usr / local / bin / python

Questo funzionerà per pip .

Se mostri i risultati di questi passaggi, possiamo probabilmente aiutarti molto più facilmente.

-- AGGIORNARE --

Ti sei /usr/local/bin/pythoncollegato a /usr/local/Cellar/python/2.7.9/bin/python. ->brew install python funzionato.

mostra, se pipè installato digitando

brew list python | grep pip

Tu dovresti vedere

/usr/local/Cellar/python/2.7.9/bin/pip

In caso contrario, controlla se ci sono collegamenti che non sono stati completati brew install. Ti ho detto una cosa del genere:

"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"

Per forzare il collegamento e sovrascrivere tutti i file in conflitto:

brew link --overwrite python

Per elencare tutti i file che verrebbero eliminati:

brew link --overwrite --dry-run python

** NO Apple standard /usr/bin/python **

collegamento da /usr/local/Cellar/python/2.7.9/bin/pythona/usr/bin/python

ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python

Questo è necessario per tutti gli script Python che iniziano con #!/usr/bin/python. especialyeasy_install fallirà, se il collegamento non è presente.

Ora sei in grado di correre

easy_install pip

Spero che tu stia facendo progressi


Marco, grazie per la tua risposta! Si prega di vedere la mia domanda originale per i risultati ai passaggi - Li ho aggiunti in
YoungPadawan

@YoungPadawan sembra che tu non abbia lo standard Apple /usr/bin/python. Questo non va bene, perché molti script Python iniziano con #!/usr/bin/python. Se non c'è Python, ricevi messaggi di errore come i tuoi. Utilizzare brew link --dry-run pythonper verificare cosa verrà modificato nei collegamenti durante l'utilizzobrew link --overwrite python . Faremo funzionare il tuo pip ;-)
Marco M. von Hagen,

usare brew link --overwrite --dry-run pythonper vedere quali file verranno sovrascritti.
Marco M. von Hagen,

1
Ho barrato la tua risposta perché mi ha portato sulla strada giusta, ma alla fine è stato un problema di autorizzazione. Dopo l'installazione ho ricevuto un Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the comando brew postinstall python` e questo mi ha portato ad alcuni file a cui non avevo accesso di cui avevo il controllo. Ora posso usare pip! Grazie ancora
YoungPadawan,

1
Nel mio caso il problema era The post-install step did not complete successfullydovuto error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. L'eliminazione manuale di quel file e la sua successiva esecuzione lo brew postinstall pythonhanno riparato.
David Pursehouse,

5

Se brew sta gestendo la tua installazione di Python e pip non è più collegato simbolicamente (ovvero digiti "quale pip" e non ottieni risultati) prova questo dalla tua directory home:

brew unlink python && brew link python

Non sono sicuro che il vecchio metodo funzioni più (non ha funzionato sulla mia macchina).

Ora conferma che in effetti punta alla tua installazione 2.7 con pip --version(elencherà la versione principale di Python nell'output della directory).


4

In realtà non è una risposta alla domanda originale, ma se qualcuno finisce qui perché ha installato Homebrew python/pip non funziona più (cioè pythonindica il sistema Python epip non viene trovato), la ragione potrebbe essere una recente (estate 2017) modo Homebrew installa e collega Python.

La soluzione è aggiungere quanto segue a ~/.bash_profilee / o ~/.zshrc:

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"

Questo farà pythonriferimento alla versione brew di Python e ti darà anche pip. Vedi la sezione avvertenze sotto brew info pythone https://github.com/Homebrew/homebrew-core/issues/15746 per ulteriori informazioni


2

Per impostazione predefinita prevede Homebrew pip via: brew install python. Tuttavia, avrai due Python installati sul tuo Mac, in alternativa puoi installarlo tramite:

sudo easy_install pip

Per verificare quali file sono installati con il pacchetto Python, provare:

$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...

che dovrebbe consistere pip .

Dopo l'installazione è necessario collegare simbolicamente i file installati della formula tramite:

brew link python

che dovrebbe creare i giusti collegamenti simbolici (come /usr/local/bin/pipindicare il tuoCellar/python/2.?.?/bin/pip )

Se hai un problema di autorizzazione, puoi risolverlo:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

e assicurati che il tuo utente sia nel gruppo admin (id -Gn $USER ).

Dopo aver corretto le autorizzazioni, non utilizzare sudodurante l'utilizzobrew comando.

Quindi ricollegalo di nuovo:

brew unlink python && brew link python

Per testare il funzionamento a secco, scollegare ed eseguire: brew link -n pythonper vedere i collegamenti di file qualibrew si collegherebbero.

Dopo che il collegamento ha esito positivo, assicurarsi che la variabile di sistema PATH abbia /usr/local, in caso contrario, aggiungere:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

al tuo ~/.bashrcfile.

In caso di successo, pipdovresti lavorare ora.


Grazie per la tua risposta kenorb! Parte del problema è che easy_install non funziona neanche per me. Nella bash ottengo: -bash: / usr / bin / easy_install: / usr / bin / python: cattivo interprete: nessun file o directory
simile

Ciò significa che non hai /usr/bin/pythoninstallato (che normalmente dovrebbe essere fornito con OS X). Quindi prova come suggerito, ovvero brew install python && brew link python:, quindi aggiungi /usr/local/binal tuo PATH.
Kenorb,

Non penso che brew install python && brew link pythonstia mettendo il pitone /usr/bin. Lo vedo usr/local/bin, ma non vedo il link simbolico per pipare lì. Ho anche scollegato e collegato Python, e non cambia nulla. Sembra che l'installazione e il collegamento della birra non
stiano

@YoungPadawan brewnon fa nulla /usr/bin, ma /usr/local/bin. Prova: brew unlink pythone dry-run: brew link -n pythonper elencare tutti i file che dovrebbero essere collegati e controllare se pipc'è. Se sì, corri di nuovo senza -n.
Kenorb,

Grazie Kenorb, ho trovato una soluzione. Alla fine è stata un'installazione difettosa a causa delle autorizzazioni. Ho modificato le autorizzazioni su alcuni file con cui era in conflitto e ho eseguito nuovamente l'installazione e ora tutto funziona correttamente. Ci sono più dettagli in un commento alla domanda sopra. Grazie ancora per la tua risposta, è stato davvero utile per farmi trovare la soluzione.
YoungPadawan,
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.