Pip: Error de codificación de nombre de archivo en algunos entornos con PAX sdist

Creado en 28 ene. 2020  ·  3Comentarios  ·  Fuente: pypa/pip

Medio ambiente

  • versión pip: cualquiera
  • Versión de Python: 2.7
  • SO: Windows, no Windows en la configuración regional C

(pip Windows CI llega a esto)

Descripción
Los sdists de la rueda de formato PAX 0.34.1 no se instalan en Python 2.7 en Windows con un UnicodeEncodeError, o en sistemas que no son Windows en una configuración regional que no es utf-8: https://github.com/pypa/wheel/issues/331

Comportamiento esperado
El nombre de archivo Unicode del tarball de PAX está codificado correctamente para el sistema de archivos local.

Cómo reproducir
Intente instalar un tarball con formato PAX que contenga un nombre de archivo que no se pueda codificar en la página de códigos predeterminada (Windows) o la codificación local predeterminada (no en Windows).

En GNU tar, las rutas afectadas están previamente modificadas a algo compatible con ASCII, pero PAX tar las conserva correctamente, por lo que el instalador debe manejarlas él mismo.

Salida

Ver
https://dev.azure.com/pypa/pip/_build/results?buildId=18040&view=logs&j=404e6841-f5ba-57d9-f2c8-8c5322057572&t=0219f6bf-240d-5b08-c877-377b12af5079 para un ejemplo de Windows en3095079 el conjunto de pruebas de pip.

El problema de la rueda vinculado anteriormente tiene algunos ejemplos de Linux.

python 2 only bug

Comentario más útil

@johnthagen Sí, el problema de codificación de configuración regional no universal que menciono en https://github.com/pypa/pip/pull/7668#issuecomment -579706165 también aplicará Python 3.

Sin embargo, 3.7+ lo mitigan significativamente, ya que no creen en el sistema operativo cuando afirma estar usando ASCII, y cambian automáticamente a usar UTF-8 en su lugar.

Todos 3 comentarios

@ncoghlan Solo un FYI, el problema que noté en https://github.com/pypa/wheel/issues/331 estaba usando Python 3.6 (en caso de que tenga algo que ver aquí).

En el proceso de justificar no arreglar esto, descubrí lo suficiente para arreglarlo. :( Ver # 7668.

@johnthagen Sí, el problema de codificación de configuración regional no universal que menciono en https://github.com/pypa/pip/pull/7668#issuecomment -579706165 también aplicará Python 3.

Sin embargo, 3.7+ lo mitigan significativamente, ya que no creen en el sistema operativo cuando afirma estar usando ASCII, y cambian automáticamente a usar UTF-8 en su lugar.

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