Brew被列为在macOS上安装httpie的推荐方式。 但是,它不适用于auth插件。
例如,如果您pip3 install requests-hawk
然后运行http --help
hawk将不会显示为身份验证类型。 如果您pip3 install httpie-oauth
会通过pip作为依赖项安装httpie并覆盖/usr/local/bin/http
的brew install链接,现在所有插件都会显示出来,因为它没有使用brew brew版本。
我建议将文档更改为读取pip3 install httpie
作为在macOS上的推荐安装方法。
@rshurts你是对的。 基于Homebrew的安装的插件安装无法立即使用。
但是,将Homebrew保留为推荐方法有很多好处。 它使更新变得容易,并且主程序包可以依赖于Python 3(改进的SSL支持等)。
理想的世界解决方案是将所有插件作为Homebrew软件包( brew install httpie-oauth
)提供。 但这对于维护人员而言意味着额外的工作,因此并非所有插件都可以在Homebrew中使用。
使用pip
安装插件似乎更简单。 要使其与Hombrew一起使用,将意味着指示pip
(当前)使用/usr/local/Cellar/httpie/0.9.8_2/libexec/lib/python3.6/site-packages
作为安装目录。
但是在那里安装的插件将无法承受HTTPie升级。
也许可以调整Homebrew公式,以允许从例如Homebrew Python 3 site-packages
(不确定是否是永久性的)中通过HTTPie加载已安装的插件。 或从另一个位置。
…或某种自定义插件安装程序。
同时,也许有关插件的文档中有一条注释说“ brew不适用于插件,并且为插件功能点点安装httpie”会省些麻烦。
当用户没有管理员权限时,读取权限也存在问题:
$ 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'
我能够用
chmod +r /usr/local/Cellar/httpie/1.0.0/libexec/lib/python3.7/site-packages/idna-2.7-py3.7.egg-info/PKG-INFO
但改用pip3 install httpie
是因为它使安装插件更加容易。
自从我升级到10.14 Mojave之后,我遇到了@aheissenberger上面提到的权限错误。 我具有使用本地管理员帐户安装自制软件的相同设置,但在标准帐户中可以正常运行。 我不是Python的人,也不了解关于插件的讨论。 我不记得尝试添加任何自家自制配方之外的东西了。 pip3 list
仅显示3个项目,这些项目大概是初始Python捆绑包的一部分。
这从根本上来说是一个Python3问题(至少是通过自制软件安装的Python)吗? 我应该向维护者报告它吗?
对于它的价值,也许其他用户正在寻找答案,安装插件对我来说很好用,如下所示:
pip3 install -t /usr/local/Cellar/httpie/2.0.0/libexec/lib/python3.8/site-packages httpie-jwt-auth
谢谢https://github.com/jakubroztocil/httpie/issues/566#issuecomment -285210693
最有用的评论
同时,也许有关插件的文档中有一条注释说“ brew不适用于插件,并且为插件功能点点安装httpie”会省些麻烦。