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