Httpie: La versión instalada de Brew no funciona con complementos

Creado en 8 mar. 2017  ·  5Comentarios  ·  Fuente: httpie/httpie

Brew figura como la forma recomendada de instalar httpie en macOS. Sin embargo, no funciona con complementos de autenticación.

Por ejemplo, si pip3 install requests-hawk y luego ejecuta http --help hawk no se mostrará como un tipo de autenticación. Si pip3 install httpie-oauth instalará httpie a través de pip como una dependencia y sobrescribirá el enlace de brew instalado en /usr/local/bin/http y ahora se mostrarán todos los complementos porque no está usando la versión de brew instalada.

Sugiero cambiar la documentación para que lea pip3 install httpie como el método recomendado de instalación en macOS.

bug docs

Comentario más útil

Mientras tanto, tal vez una nota en la documentación acerca de los complementos que diga "brew no funciona con los complementos y pip install httpie para la funcionalidad del complemento" ahorraría algunos dolores de cabeza.

Todos 5 comentarios

@rshurts tienes razón. La instalación de complementos para instalaciones basadas en Homebrew no funciona de inmediato.

Sin embargo, existen ventajas en mantener Homebrew como método recomendado. Facilita las actualizaciones y el paquete principal puede depender de Python 3 (compatibilidad mejorada con SSL, etc.).

La solución mundial ideal sería tener todos los complementos disponibles como paquetes Homebrew ( brew install httpie-oauth ). Pero eso significaría trabajo adicional para los mantenedores, por lo que no todos los complementos terminarían en Homebrew.

Usar pip para instalar complementos parece la forma más fácil de hacerlo. Para que funcione con Hombrew, significaría indicarle a pip que use (actualmente) /usr/local/Cellar/httpie/0.9.8_2/libexec/lib/python3.6/site-packages como directorio de instalación.

Pero los complementos instalados allí no sobrevivirán a las actualizaciones de HTTPie.

Quizás sería posible modificar la fórmula de Homebrew para permitir que HTTPie cargue los complementos instalados desde, por ejemplo, Homebrew Python 3 site-packages (no estoy seguro de si es permanente). O desde otro lugar.

… O algún tipo de instalador de complementos personalizado.

Mientras tanto, tal vez una nota en la documentación acerca de los complementos que diga "brew no funciona con los complementos y pip install httpie para la funcionalidad del complemento" ahorraría algunos dolores de cabeza.

También hay un problema con los derechos de lectura cuando el usuario no tiene derechos de administrador:

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

Pude arreglarlo con

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

pero cambió a pip3 install httpie porque facilitó la instalación de complementos.

Desde que actualicé a 10.14 Mojave, tengo el error de permisos mencionado anteriormente por @aheissenberger . Tengo la misma configuración donde instalo homebrew usando una cuenta de administrador local, pero hago una operación normal en una cuenta estándar. No soy una persona de Python y no entiendo esta discusión sobre complementos. No recuerdo haber intentado agregar nada de httpie más allá de lo que venga como parte de la fórmula de homebrew. pip3 list solo muestra 3 elementos que presumiblemente eran parte del paquete inicial de Python.

¿Es esto fundamentalmente un problema de Python3 (al menos, Python instalado a través de homebrew)? ¿Debería informar a los mantenedores?

Por lo que vale y quizás otros usuarios buscando en Google una respuesta, la instalación de un complemento funcionó bien para mí de esta manera:

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

Gracias https://github.com/jakubroztocil/httpie/issues/566#issuecomment -285210693

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

eliangcs picture eliangcs  ·  5Comentarios

Abdallah-Obaid picture Abdallah-Obaid  ·  4Comentarios

filipesperandio picture filipesperandio  ·  3Comentarios

tonsV2 picture tonsV2  ·  4Comentarios

rashthedude picture rashthedude  ·  3Comentarios