Httpie: Die von Brew installierte Version funktioniert nicht mit Plugins

Erstellt am 8. März 2017  ·  5Kommentare  ·  Quelle: httpie/httpie

Brew wird als empfohlene Methode zur Installation von httpie unter macOS aufgeführt. Es funktioniert jedoch nicht mit Auth-Plugins.

Wenn Sie beispielsweise pip3 install requests-hawk ausführen und dann http --help ausführen, wird hawk nicht als Authentifizierungstyp angezeigt. Wenn Sie pip3 install httpie-oauth , wird httpie via pip als Abhängigkeit installiert und der Link zum Installieren von Brew in /usr/local/bin/http überschrieben. Jetzt werden alle Plugins angezeigt, da nicht die installierte Version von Brew verwendet wird.

Ich empfehle, die Dokumentation so zu ändern, dass pip3 install httpie als empfohlene Installationsmethode unter macOS angezeigt wird.

bug docs

Hilfreichster Kommentar

In der Zwischenzeit würde ein Hinweis in der Dokumentation zu Plugins, der besagt, dass "Brew nicht mit Plugins funktioniert und httpie für Plugin-Funktionen installiert werden soll", einige Kopfschmerzen ersparen könnte.

Alle 5 Kommentare

@ rshurts du hast recht. Die Plugin-Installation für Homebrew-basierte Installationen funktioniert nicht sofort.

Es hat jedoch Vorteile, Homebrew als empfohlene Methode beizubehalten. Es macht Updates einfach und das Hauptpaket kann von Python 3 abhängen (verbesserte SSL-Unterstützung usw.).

Die ideale Weltlösung wäre, alle Plugins als Homebrew-Pakete verfügbar zu haben ( brew install httpie-oauth ). Dies würde jedoch zusätzliche Arbeit für die Betreuer bedeuten, sodass nicht alle Plugins in Homebrew landen würden.

Die Verwendung von pip zum Installieren von Plugins scheint der einfachere Weg zu sein. Damit es mit Hombrew funktioniert, muss pip angewiesen werden, (derzeit) /usr/local/Cellar/httpie/0.9.8_2/libexec/lib/python3.6/site-packages als Installationsverzeichnis zu verwenden.

Dort installierte Plugins überleben HTTPie-Upgrades jedoch nicht.

Vielleicht wäre es möglich, die Homebrew-Formel zu optimieren, um das Laden von installierten Plugins durch HTTPie zu verringern, beispielsweise von Homebrew Python 3 site-packages (nicht sicher, ob es dauerhaft ist). Oder von einem anderen Ort.

… Oder eine Art benutzerdefiniertes Plugin-Installationsprogramm.

In der Zwischenzeit würde ein Hinweis in der Dokumentation zu Plugins, der besagt, dass "Brew nicht mit Plugins funktioniert und httpie für Plugin-Funktionen installiert werden soll", einige Kopfschmerzen ersparen könnte.

Es gibt auch ein Problem mit den Leserechten, wenn der Benutzer keine Administratorrechte hat:

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

Ich konnte es mit beheben

chmod +r /usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/idna-2.7-py3.7.egg-info/PKG-INFO

aber wechselte zu pip3 install httpie weil es die Installation von Plugins einfacher machte.

Seit ich auf 10.14 Mojave aktualisiert habe, habe ich den oben von @aheissenberger erwähnten pip3 list zeigt nur 3 Elemente an, die vermutlich Teil des ursprünglichen Python-Bundles waren.

Ist dies grundsätzlich ein Python3-Problem (zumindest Python, wie über Homebrew installiert)? Sollte ich es den Betreuern melden?

Für das, was es wert ist und vielleicht andere Benutzer nach einer Antwort googeln, hat die Installation eines Plugins für mich wie folgt funktioniert:

pip3 install -t /usr/local/Cellar/httpie/2.0.0/libexec/lib/python3.8/site-packages httpie-jwt-auth

Vielen Dank an https://github.com/jakubroztocil/httpie/issues/566#issuecomment -285210693

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen