Pip: Dateinamencodierungsfehler in einigen Umgebungen mit PAX sdist

Erstellt am 28. Jan. 2020  ·  3Kommentare  ·  Quelle: pypa/pip

Umgebung

  • Pip-Version: beliebig
  • Python-Version: 2.7
  • Betriebssystem: Windows, Nicht-Windows im Gebietsschema C.

(pip Windows CI trifft dies)

Beschreibung
Das PAX-Formatrad 0.34.1 sdists kann unter Python 2.7 unter Windows mit einem UnicodeEncodeError oder auf Nicht-Windows-Systemen in einem Nicht-utf-8-Gebietsschema nicht installiert werden: https://github.com/pypa/wheel/issues/331

Erwartetes Verhalten
Der Unicode-Dateiname vom PAX-Tarball ist für das lokale Dateisystem korrekt codiert.

Wie zu reproduzieren
Versuchen Sie, einen PAX-formatierten Tarball zu installieren, der einen Dateinamen enthält, der nicht in die Standardcodepage (Windows) oder die Standardcodierung des Gebietsschemas (Nicht-Windows) codiert werden kann.

In GNU tar werden die betroffenen Pfade auf etwas ASCII-kompatibles vorab entstellt, aber PAX tar bewahrt sie korrekt auf, sodass das Installationsprogramm sie selbst verarbeiten muss.

Ausgabe

Sehen
https://dev.azure.com/pypa/pip/_build/results?buildId=18040&view=logs&j=404e6841-f5ba-57d9-f2c8-8c5322057572&t=0219f6bf-240d-5b08-c877-377b30af979 die Pip-Testsuite.

Das oben verlinkte Radproblem enthält einige Linux-Beispiele.

python 2 only bug

Hilfreichster Kommentar

@johnthagen Ja, das nicht universelle Codierungsproblem für das Gebietsschema, das ich in https://github.com/pypa/pip/pull/7668#issuecomment -579706165 erwähne, wird auch Python 3 anwenden.

3.7+ mildern es jedoch erheblich, da sie dem Betriebssystem nicht glauben, wenn es behauptet, ASCII zu verwenden, und stattdessen automatisch auf UTF-8 umsteigen.

Alle 3 Kommentare

@ncoghlan Nur zu https://github.com/pypa/wheel/issues/331 festgestellt habe, war die Verwendung von Python 3.6 (falls dies hier einen Einfluss hat).

Während ich rechtfertigte, dies nicht zu beheben, fand ich genug heraus, um es zu beheben. :( Siehe # 7668.

@johnthagen Ja, das nicht universelle Codierungsproblem für das Gebietsschema, das ich in https://github.com/pypa/pip/pull/7668#issuecomment -579706165 erwähne, wird auch Python 3 anwenden.

3.7+ mildern es jedoch erheblich, da sie dem Betriebssystem nicht glauben, wenn es behauptet, ASCII zu verwenden, und stattdessen automatisch auf UTF-8 umsteigen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen