Brew est répertorié comme la méthode recommandée pour installer httpie sur macOS. Cependant, cela ne fonctionne pas avec les plugins d'authentification.
Par exemple, si vous pip3 install requests-hawk
puis exécutez http --help
hawk ne s'affichera pas en tant que type d'authentification. Si vous pip3 install httpie-oauth
il installera httpie via pip en tant que dépendance et écrasera le lien installé de brew dans /usr/local/bin/http
et maintenant tous les plugins s'afficheront car il n'utilise pas la version installée de brew.
Je suggère de modifier la documentation pour lire pip3 install httpie
comme méthode recommandée d'installation sur macOS.
@rshurts vous avez raison. L'installation de plugins pour les installations basées sur Homebrew ne fonctionne pas immédiatement.
Il y a cependant des avantages à garder Homebrew comme méthode recommandée. Cela facilite les mises à jour et le package principal peut dépendre de Python 3 (support SSL amélioré, etc.).
La solution mondiale idéale serait d'avoir tous les plugins disponibles sous forme de packages Homebrew ( brew install httpie-oauth
). Mais cela signifierait un travail supplémentaire pour les responsables, donc tous les plugins ne se retrouveraient pas dans Homebrew.
Utiliser pip
pour installer des plugins semble être la solution la plus simple. Pour le faire fonctionner avec Hombrew, cela signifierait demander à pip
d'utiliser (actuellement) /usr/local/Cellar/httpie/0.9.8_2/libexec/lib/python3.6/site-packages
comme répertoire d'installation.
Mais les plugins installés là-bas ne survivront pas aux mises à niveau HTTPie.
Peut-être serait-il possible de modifier la formule Homebrew pour faire charger lentement les plugins HTTPie installés à partir, par exemple, de Homebrew Python 3 site-packages
(je ne sais pas si c'est permanent). Ou depuis un autre endroit.
… Ou une sorte de programme d'installation de plugin personnalisé.
En attendant, peut-être qu'une note dans la documentation sur les plugins disant "brew ne fonctionne pas avec les plugins et installer httpie pour la fonctionnalité des plugins" vous éviterait des maux de tête.
Il y a également un problème avec les droits de lecture lorsque l'utilisateur n'a pas de droits d'administrateur:
$ http --help
Traceback (most recent call last):
File "/usr/local/bin/http", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3123, in <module>
<strong i="6">@_call_aside</strong>
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3107, in _call_aside
f(*args, **kwargs)
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3136, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 569, in _build_master
ws = cls()
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 562, in __init__
self.add_entry(entry)
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 618, in add_entry
for dist in find_distributions(entry, True):
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1965, in find_on_path
for dist in factory(fullpath):
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2035, in distributions_from_metadata
root, entry, metadata, precedence=DEVELOP_DIST,
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2492, in from_location
py_version=py_version, platform=platform, **kw
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2867, in _reload_version
md_version = _version_from_file(self._get_metadata(self.PKG_INFO))
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2456, in _version_from_file
line = next(iter(version_lines), '')
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2646, in _get_metadata
for line in self.get_metadata_lines(name):
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1411, in get_metadata_lines
return yield_lines(self.get_metadata(name))
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1407, in get_metadata
value = self._get(self._fn(self.egg_info, name))
File "/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1519, in _get
with open(path, 'rb') as stream:
PermissionError: [Errno 13] Permission denied: '/usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/idna-2.7-py3.7.egg-info/PKG-INFO'
J'ai pu le réparer avec
chmod +r /usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/idna-2.7-py3.7.egg-info/PKG-INFO
mais est passé à pip3 install httpie
cause de cela, il a été plus facile d'installer des plugins.
Depuis que je suis passé à 10.14 Mojave, j'ai l'erreur d'autorisation mentionnée par @aheissenberger ci-dessus. J'ai la même configuration où j'installe homebrew en utilisant un compte administrateur local mais je fais un fonctionnement normal dans un compte standard. Je ne suis pas une personne Python et je ne comprends pas cette discussion sur les plugins. Je ne me souviens pas avoir essayé d'ajouter quoi que ce soit httpie au-delà de ce qui fait partie de la formule homebrew. pip3 list
ne montre que 3 éléments qui faisaient probablement partie du bundle Python initial.
Est-ce fondamentalement un problème Python3 (au moins, Python tel qu'installé via homebrew)? Dois-je le signaler aux responsables?
Pour ce que ça vaut et peut-être que d'autres utilisateurs recherchent une réponse sur Google, l'installation d'un plugin a bien fonctionné pour moi comme ceci:
pip3 install -t /usr/local/Cellar/httpie/2.0.0/libexec/lib/python3.8/site-packages httpie-jwt-auth
Merci https://github.com/jakubroztocil/httpie/issues/566#issuecomment -285210693
Commentaire le plus utile
En attendant, peut-être qu'une note dans la documentation sur les plugins disant "brew ne fonctionne pas avec les plugins et installer httpie pour la fonctionnalité des plugins" vous éviterait des maux de tête.