Httpie: Brewがインストールしたバージョンはプラグインでは機能しません

作成日 2017年03月08日  ·  5コメント  ·  ソース: httpie/httpie

Brewは、macOSにhttpieをインストールするための推奨される方法としてリストされています。 ただし、認証プラグインでは機能しません。

たとえば、 pip3 install requests-hawkを実行してからhttp --help実行すると、hawkは認証タイプとして表示されません。 pip3 install httpie-oauth場合、依存関係としてpip経由でhttpieをインストールし、 /usr/local/bin/httpのbrewインストール済みリンクを上書きします。brewインストール済みバージョンを使用していないため、すべてのプラグインが表示されます。

macOSにインストールするための推奨される方法として、ドキュメントをpip3 install httpieに変更することをお勧めします。

bug docs

最も参考になるコメント

それまでの間、プラグインに関するドキュメントに「brewはプラグインでは機能せず、プラグイン機能のためにhttpieをpipインストールする」というメモがあれば、頭痛の種を減らすことができます。

全てのコメント5件

@rshurtsあなたが正しいです。 Homebrewベースのインストール用のプラグインインストールは、そのままでは機能しません。

ただし、Homebrewを推奨される方法として維持することには利点があります。 更新が簡単になり、メインパッケージはPython 3に依存できます(SSLサポートの改善など)。

理想的な世界の解決策は、すべてのプラグインをHomebrewパッケージ( brew install httpie-oauth )として利用できるようにすることです。 しかし、それはメンテナにとって余分な作業を意味するので、すべてのプラグインがHomebrewで終わるわけではありません。

pipを使用してプラグインをインストールする方が簡単な方法のようです。 Hombrewで動作させるには、インストールディレクトリとして(現在) /usr/local/Cellar/httpie/0.9.8_2/libexec/lib/python3.6/site-packagesを使用するようにpipに指示することを意味します。

しかし、そこにインストールされたプラグインはHTTPieのアップグレードに耐えられません。

おそらく、 Homebrewの式を微調整して、たとえばHomebrew Python 3 site-packagesからHTTPieがインストールされたプラグインをロードできるようにすることが可能です(永続的かどうかはわかりません)。 または別の場所から。

…またはある種のカスタムプラグインインストーラー。

それまでの間、プラグインに関するドキュメントに「brewはプラグインでは機能せず、プラグイン機能のためにhttpieをpipインストールする」というメモがあれば、頭痛の種を減らすことができます。

ユーザーに管理者権限がない場合、読み取り権限にも問題があります。

$ 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で説明した権限エラーが発生します。 ローカル管理者アカウントを使用してhomebrewをインストールするのと同じ設定ですが、標準アカウントで通常の操作を行います。 私はPythonの人間ではなく、プラグインに関するこの議論を理解していません。 自作の公式の一部として来るものを超えてhttpieを追加しようとしたことを覚えていません。 pip3 listは、おそらく最初のPythonバンドルの一部であった3つのアイテムのみを表示します。

これは基本的に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

このページは役に立ちましたか?
0 / 5 - 0 評価