Pip: Erro de codificação de nome de arquivo em alguns ambientes com PAX sdist

Criado em 28 jan. 2020  ·  3Comentários  ·  Fonte: pypa/pip

Meio Ambiente

  • versão pip: qualquer
  • Versão Python: 2.7
  • SO: Windows, não Windows na localidade C

(pip Windows CI atinge isso)

Descrição
A roda de formato PAX 0.34.1 sdists falha ao instalar no Python 2.7 no Windows com um UnicodeEncodeError ou em sistemas não Windows em um local não utf-8: https://github.com/pypa/wheel/issues/331

Comportamento esperado
O nome de arquivo Unicode do tarball PAX está codificado corretamente para o sistema de arquivos local.

Como reproduzir
Tente instalar um tarball formatado em PAX contendo um nome de arquivo que não pode ser codificado na página de código padrão (Windows) ou na codificação local padrão (não Windows).

No GNU tar, os caminhos afetados são pré-mutilados para algo compatível com ASCII, mas o PAX tar os preserva corretamente, então o instalador precisa tratá-los sozinho.

Resultado

Vejo
https://dev.azure.com/pypa/pip/_build/results?buildId=18040&view=logs&j=404e6841-f5ba-57d9-f2c8-8c5322057572&t=0219f6bf-240d-5b08-c877-377 exemplob12af5079&l=309 para Windows a o conjunto de testes pip.

O problema da roda relacionado acima tem alguns exemplos do Linux.

python 2 only bug

Comentários muito úteis

@johnthagen Sim, o problema de codificação de localidade não universal que menciono em https://github.com/pypa/pip/pull/7668#issuecomment -579706165 também aplicará o Python 3.

No entanto, o 3.7+ o atenua significativamente, já que eles não acreditam no sistema operacional quando ele afirma estar usando ASCII e, em vez disso, passam a usar UTF-8 automaticamente.

Todos 3 comentários

@ncoghlan Apenas para https://github.com/pypa/wheel/issues/331 estava usando Python 3.6 (no caso de ter alguma relação aqui).

No processo de justificar o não conserto, descobri o suficiente para consertar. :( Consulte # 7668.

@johnthagen Sim, o problema de codificação de localidade não universal que menciono em https://github.com/pypa/pip/pull/7668#issuecomment -579706165 também aplicará o Python 3.

No entanto, o 3.7+ o atenua significativamente, já que eles não acreditam no sistema operacional quando ele afirma estar usando ASCII e, em vez disso, passam a usar UTF-8 automaticamente.

Esta página foi útil?
0 / 5 - 0 avaliações