pip ne fonctionne pas sur hombrew python 2.7 install

15

J'ai installé python en utilisant homebrew et je ne peux pas appeler pip depuis bash. J'ai essayé de modifier mon .bash_profile pour inclure / usr / local / bin / python et / usr local / share / python en vain.

Lorsque j'utilise la commande bash:

find / -name 'pip'

Les seuls résultats que j'obtiens sont:

/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

Aucun n'est un exécutable.

Je ne sais pas vraiment où pointer mon $ PATH car je ne trouve pas l'exécutable pip. Quand j'ouvre

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

ou

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

Je trouve les fichiers suivants:

__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

Aucun n'est un exécutable.

J'apprécierais l'aide de toute personne ayant plus d'expérience que moi.

Edit: j'ai essayé les étapes suggérées par Marco:

Voici les résultats des étapes:

  1. echo $ PATH affiche quelques répertoires: / 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. qui -a python renvoie: / usr / local / bin / python / usr / local / bin / python

rien n'est retourné pour lequel -a pip

  1. quel python renvoie: / usr / local / bin / python

rien n'est retourné pour quel pip

  1. ls -l $ (quel python) renvoie un seul répertoire: lrwxr-xr-x 1 Ivan admin 33 17 mai 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ python

ls -l $ (quel pip) renvoie plusieurs, y compris les fichiers python que j'ai montrés dans mon post d'origine

YoungPadawan
la source

Réponses:

19

Généralement, homebrewinstalle un formuladans /usr/local/Cellar/formulapuis place un lien sur /usr/local/bin/formula.

Pour utiliser vos formules installées, assurez-vous qu'elles /usr/local/binse trouvent dans votre $PATH. Montrez votre $PATHen tapant

echo $PATH

Si /usr/local/binn'est pas dans votre $PATH, mettez cette ligne à la fin de votre ~/.profilefichier.

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

Maintenant, vérifiez ce que l' pythonson trouve sur votre OSX en tapant:

which -a python

Il devrait y avoir un python sur /usr/bin/(le python Apple) et un sur /usr/local/bin/lequel se trouve le python Homebrew.

which python

vous montrera quel python se trouve en premier dans votre $PATH et sera exécuté lorsque vous l'invoquerez python.

Si vous voulez savoir où se trouve l'exécutable, montrez-le en tapant

ls -l $(which python)

Cela pourrait ressembler à ceci: lrwxr-xr-x 1 roue racine 68 7 Mai 13:22 python -> / usr / local / bin / python

Cela fonctionnera pipégalement.

Si vous montrez les résultats de ces étapes, nous pouvons probablement vous aider beaucoup plus facilement.

-- MISE À JOUR --

Vous vous êtes /usr/local/bin/pythonlié à /usr/local/Cellar/python/2.7.9/bin/python. -> brew install pythontravaillé.

afficher, si pipest installé en tapant

brew list python | grep pip

Tu devrais voir

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

Sinon, vérifiez s'il y a des liens, ce qui n'est pas fait avec brew install. Je vous ai dit quelque chose comme ça:

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

Pour forcer le lien et écraser tous les fichiers en conflit:

brew link --overwrite python

Pour répertorier tous les fichiers qui seraient supprimés:

brew link --overwrite --dry-run python

** PAS d'Apple standard /usr/bin/python**

lien de /usr/local/Cellar/python/2.7.9/bin/pythonà/usr/bin/python

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

Ceci est nécessaire pour tous les scripts python commençant par #!/usr/bin/python. Surtout easy_installéchouera si le lien n'est pas là.

Maintenant, vous pouvez exécuter

easy_install pip

J'espère que vous progressez

Marco M. von Hagen
la source
Marco, merci pour ta réponse! Veuillez voir ma question d'origine pour les résultats des étapes - je les ai ajoutées dans
YoungPadawan
@YoungPadawan semble que vous ne disposez pas de la norme Apple /usr/bin/python. Ce n'est pas bon, car de nombreux scripts Python commencent par #!/usr/bin/python. S'il n'y a pas de python, vous obtenez des messages d'erreur comme le vôtre. Utilisez brew link --dry-run pythonpour vérifier ce qui sera modifié pour vos liens lors de l'utilisation brew link --overwrite python. Nous allons faire fonctionner votre pip ;-)
Marco M. von Hagen
utilisez brew link --overwrite --dry-run pythonpour voir quels fichiers seront remplacés.
Marco M. von Hagen
1
J'ai coché votre réponse parce qu'elle m'a conduit sur la bonne voie, mais à la fin, c'était un problème de permission. Après l'installation, j'ai reçu une Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the commande brew postinstall python` et cela m'a conduit à quelques fichiers auxquels je n'avais pas accès et que je me suis effrayé. Maintenant, je peux utiliser pip! Merci encore
YoungPadawan
1
Dans mon cas, le problème était The post-install step did not complete successfullydû à error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. La suppression manuelle de ce fichier, puis sa réexécution l'ont brew postinstall pythoncorrigé.
David Pursehouse
5

Si brew gère votre installation python et que pip n'est plus lié par un lien symbolique (c'est-à-dire que vous tapez "quel pip" et n'obtenez aucun résultat), essayez ceci à partir de votre répertoire personnel:

brew unlink python && brew link python

Je ne sais pas si l'ancienne méthode fonctionne plus (elle ne fonctionnait pas sur ma machine).

Confirmez maintenant qu'il pointe bien vers votre installation 2.7 avec pip --version(il listera la version principale de python dans la sortie du répertoire).

GrayedFox
la source
4

Pas vraiment une réponse à la question d'origine, mais si quelqu'un se retrouve ici parce que son Homebrew installé python/pipne fonctionne plus (c'est- pythonà- dire qu'il pointe vers le système python et pipn'est pas trouvé), la raison pourrait être un changement récent (été 2017) dans le Homebrew installe et relie python.

La solution consiste à ajouter les éléments suivants à ~/.bash_profileet / ou ~/.zshrc:

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

Cela pythonindiquera la version brew de python et vous donnera également pip. Voir la section des mises en garde sous brew info pythonet https://github.com/Homebrew/homebrew-core/issues/15746 pour plus d'informations

bjorgvin
la source
2

Par défaut Homebrew fournit pip via: brew install python. Cependant, vous aurez alors deux Pythons installés sur votre Mac, vous pouvez également l'installer via:

sudo easy_install pip

Pour vérifier quels fichiers sont installés avec votre package Python, essayez:

$ 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
...

qui devrait consister pip.

Après l'installation, vous devez créer un lien symbolique entre les fichiers installés de votre formule en:

brew link python

qui devrait créer les bons liens symboliques (comme /usr/local/bin/pippointer vers votre Cellar/python/2.?.?/bin/pip)

Si vous avez un problème d'autorisation, vous pouvez le résoudre en:

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

et assurez-vous que votre utilisateur est dans le groupe admin ( id -Gn $USER).

Après avoir corrigé les autorisations, ne les utilisez pas sudolorsque vous utilisez la brewcommande.

Puis reconnectez-le à nouveau:

brew unlink python && brew link python

Pour tester le dry-run, dissocier et exécuter: brew link -n pythonpour voir les liens des fichiers qui brewlieraient.

Une fois la liaison réussie, assurez-vous que votre variable système PATH a /usr/local, sinon, ajoutez:

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

à votre ~/.bashrcdossier.

En cas de succès, vous pipdevriez travailler maintenant.

Kenorb
la source
Merci pour votre réponse kenorb! Une partie du problème est que easy_install ne fonctionne pas non plus pour moi. Dans le bash, j'obtiens: -bash: / usr / bin / easy_install: / usr / bin / python: mauvais interprète: aucun fichier ou répertoire de ce type
YoungPadawan
Cela signifie que vous n'avez pas /usr/bin/pythoninstallé (qui devrait normalement être fourni avec OS X). Veuillez donc essayer comme suggéré, c'est-à- brew install python && brew link pythondire:, puis ajoutez /usr/local/binà votre PATH.
kenorb
Je ne pense pas que cela brew install python && brew link pythonmet du python /usr/bin. Je le vois usr/local/bin, mais je ne vois pas le lien symbolique vers pip là-bas. J'ai également dissocié et lié python, et rien ne change. Il semble que l'installation et le lien de brassage ne mettent pas les choses là où elles devraient
YoungPadawan
@YoungPadawan brewne fait rien avec /usr/bin, mais /usr/local/bin. Essayez: brew unlink pythonet dry-run: brew link -n pythonpour répertorier tous les fichiers qui doivent être liés et vérifier s'ils pipexistent. Si oui, exécutez à nouveau sans -n.
kenorb
Merci Kenorb, j'ai trouvé une solution. En fin de compte, c'était une installation défectueuse en raison des autorisations. J'ai modifié les autorisations sur quelques fichiers avec lesquels brew était en conflit et j'ai relancé l'installation et maintenant tout fonctionne bien. Il y a plus de détails dans un commentaire à la question ci-dessus. Merci encore pour votre réponse, cela m'a vraiment aidé à trouver la solution.
YoungPadawan