Lorsque j'exécute la commande pip, j'obtiens une erreur comme pkg_resources.DistributionNotFound: pip == 1.5.4
et je ne peux rien faire.
pip install --upgrade pip
brew install python
==> Caveats
Setuptools and Pip have been installed. To update them
pip install --upgrade setuptools
pip install --upgrade pip
Cependant, si j'améliore le pip en fonction de cela, le pip ne fonctionnera pas.
Le pip a été mis à jour, mais / usr / local / bin / pip
est toujours obsolète.
Vous pouvez démarrer pip avec python -m pip
. Supprimer / usr / local / bin / pip
$ rm /usr/local/bin/pip /usr/local/bin/pip2 /usr/local/bin/pip2.7
$ python -m pip install --upgrade --force-reinstall pip
Ou
$ python -m pip install --upgrade --force-reinstall pip --no-use-wheel
Faire. Si vous utilisez cette dernière méthode, chaque fois que vous mettez à jour votre pip ou setuptools à l'avenir
$ pip install --upgrade --no-use-wheel pip setuptools
besoin de le faire.
Il s'agit d'un problème de compatibilité entre Homebrew et wheel.
Homebrew utilise pip et setuptools lors de l'installation de Python
/usr/local/Cellar/python/<version>/
Installez-le sous celui-ci et installez le lien symbolique vers la commande pip, etc. dans
/ usr / local / bin /
.
Ensuite, écrivez le paramètre prefix = / usr / local
dans distutils.cfg
, et le paquet qui est normalement installé par pip install
etc. est un script sous/ usr / local / bin /
Assurez-vous que la bibliothèque est installée sous / local / lib / pytthon2.7 / `.
Quand je fais pip install --upgrade pip
dans cet état, je veux installer le script / usr / local / bin / pip
, mais il existe déjà un lien symbolique que Homebrew ne détecte pas. ..
Le comportement lorsque le lien symbolique est déjà à l'endroit où vous souhaitez installer le script, mais il est différent entre l'installation depuis wheel et l'installation depuis tar.gz, dans le cas de wheel, il ne peut pas être installé et il est ignoré, et dans le cas de tar.gz Réécrira la destination du lien du lien symbolique (c'est-à-dire le contenu de Cellar).
Les pips modernes utilisent la roue par défaut, ce qui laisse des liens symboliques pour les scripts qui essaient d'utiliser des versions plus anciennes de pips sous Cellar, ce qui les rend non amorçables.
Je ne pense pas qu'il soit bon que le comportement soit différent lors de l'utilisation de la molette et de la non-utilisation de celle-ci, mais comme il n'y a pas de réponse correcte lors de l'écrasement du lien symbolique créé en externe en premier lieu, Homebrew est pip install- Si vous autorisez -upgrade pip
, je pense que vous devriez installer pip normalement depuis le début.
J'ai émis une demande d'extraction qui corrige pip et setuptools pour arrêter de les installer dans Cellar. https://github.com/Homebrew/homebrew/pull/29926
Le PR ci-dessus a été rejeté car il ne correspondait pas à la politique de base de Homebrew. Par conséquent, de la même manière que lors de l'installation à l'aide de wheel, comme dans le cas de ne pas utiliser de wheel, PR la modification à écraser (destination du lien) même si le lien symbolique correspond déjà à la destination d'installation du script est PR du côté pip, et plus tôt Il a été capturé.
Une fois que le prochain pip (1.6.0) est sorti et livré avec le Python de Homebrew, vous devriez être capable de mettre à jour normalement avec pip install --upgrade pip
de la prochaine version.
Cela dit, il y a deux pépins à l'intérieur et à l'extérieur du Celler, et le script à l'intérieur est réécrit lors de l'installation à l'extérieur, ce qui est loin d'être intelligent. Sauf si vous rencontrez des problèmes particuliers, nous vous recommandons de ne pas mettre à jour votre pip et d'attendre que Homebrew se mette à jour.
De plus, les gros développeurs Python peuvent préférer créer les leurs avec MacPorts ou pyenv plutôt que Homebrew, qui est forcé par sa propre méthode.
pip install --upgrade pip
a été corrigé, mais pip install --user ipython
etc. ne fonctionne toujours pas et je ne sais pas quels autres effets secondaires il y a autour du packaging.
Recommended Posts