Httpie: La version installée de Brew ne fonctionne pas avec les plugins

Créé le 8 mars 2017  ·  5Commentaires  ·  Source: httpie/httpie

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.

bug docs

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.

Tous les 5 commentaires

@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

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Govinda-Fichtner picture Govinda-Fichtner  ·  6Commentaires

mattotodd picture mattotodd  ·  3Commentaires

maciej picture maciej  ·  4Commentaires

ghost picture ghost  ·  5Commentaires

loretoparisi picture loretoparisi  ·  6Commentaires