Brew terdaftar sebagai cara yang disarankan untuk menginstal httpie di macOS. Namun, itu tidak berfungsi dengan plugin auth.
Misalnya, jika Anda pip3 install requests-hawk
dan kemudian menjalankan http --help
hawk tidak akan ditampilkan sebagai tipe auth. Jika Anda pip3 install httpie-oauth
itu akan menginstal httpie melalui pip sebagai ketergantungan dan menimpa link yang diinstal brew di /usr/local/bin/http
dan sekarang semua plugin akan muncul karena tidak menggunakan versi yang diinstal brew.
Saya sarankan untuk mengubah dokumentasi menjadi pip3 install httpie
sebagai metode penginstalan yang disarankan di macOS.
@rush Anda benar. Penginstalan plugin untuk penginstalan berbasis Homebrew tidak berfungsi di luar kotak.
Ada keuntungan untuk mempertahankan Homebrew sebagai metode yang disarankan. Itu membuat pembaruan menjadi mudah dan paket utama dapat bergantung pada Python 3 (dukungan SSL yang ditingkatkan, dll.).
Solusi dunia yang ideal adalah memiliki semua plugin yang tersedia sebagai paket Homebrew ( brew install httpie-oauth
). Tetapi itu berarti pekerjaan ekstra untuk pengelola sehingga tidak semua plugin akan berakhir di Homebrew.
Menggunakan pip
untuk menginstal plugin sepertinya cara yang lebih mudah. Untuk membuatnya bekerja dengan Hombrew, itu berarti menginstruksikan pip
untuk menggunakan (saat ini) /usr/local/Cellar/httpie/0.9.8_2/libexec/lib/python3.6/site-packages
sebagai direktori instalasi.
Tetapi plugin yang dipasang di sana tidak akan bertahan dalam peningkatan HTTPie.
Mungkin dimungkinkan untuk mengubah rumus Homebrew untuk membuat HTTPie memuat plugin yang diinstal dari, misalnya, Homebrew Python 3 site-packages
(tidak yakin apakah itu permanen). Atau dari lokasi lain.
… Atau semacam pemasang plugin khusus.
Sementara itu, mungkin catatan dalam dokumentasi seputar plugin yang mengatakan "brew tidak bekerja dengan plugin dan memasang pip httpie untuk fungsionalitas plugin" akan menghemat beberapa sakit kepala.
Ada juga masalah dengan hak baca saat pengguna tidak memiliki hak admin:
$ 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'
Saya bisa memperbaikinya dengan
chmod +r /usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/idna-2.7-py3.7.egg-info/PKG-INFO
tetapi beralih ke pip3 install httpie
karena itu membuatnya lebih mudah untuk menginstal plugin.
Sejak saya meningkatkan ke 10.14 Mojave, saya mengalami kesalahan izin yang disebutkan oleh @aheissenberger di atas. Saya memiliki pengaturan yang sama di mana saya menginstal homebrew menggunakan akun admin lokal tetapi melakukan operasi normal di akun standar. Saya bukan orang Python dan tidak mengerti diskusi tentang plugin ini. Saya tidak ingat mencoba menambahkan apa pun di luar apa pun yang datang sebagai bagian dari formula homebrew. pip3 list
hanya menampilkan 3 item yang mungkin merupakan bagian dari paket Python awal.
Apakah ini pada dasarnya adalah masalah Python3 (setidaknya, Python diinstal melalui homebrew)? Haruskah saya melaporkannya ke pengelola?
Untuk apa nilainya dan mungkin pengguna lain mencari jawabannya di Google, menginstal plugin berfungsi dengan baik untuk saya seperti ini:
pip3 install -t /usr/local/Cellar/httpie/2.0.0/libexec/lib/python3.8/site-packages httpie-jwt-auth
Terima kasih https://github.com/jakubroztocil/httpie/issues/566#issuecomment -285210693
Komentar yang paling membantu
Sementara itu, mungkin catatan dalam dokumentasi seputar plugin yang mengatakan "brew tidak bekerja dengan plugin dan memasang pip httpie untuk fungsionalitas plugin" akan menghemat beberapa sakit kepala.