環境
(pip Windows CIがこれにヒットします)
説明
PAXフォーマットホイール0.34.1sdistsは、UnicodeEncodeErrorのあるWindows上のPython 2.7、またはutf-8以外のロケールのWindows以外のシステムにインストールできません: https :
予想される行動
PAX tarballのUnicodeファイル名は、ローカルファイルシステム用に正しくエンコードされています。
再現する方法
デフォルトのコードページ(Windows)またはデフォルトのロケールエンコーディング(Windows以外)にエンコードできないファイル名を含むPAX形式のtarballをインストールしてみてください。
GNU tarでは、影響を受けるパスはASCII互換のものに事前にマングルされていますが、PAX tarはそれらを正しく保持するため、インストーラーはそれらを自分で処理する必要があります。
出力
見る
https://dev.azure.com/pypa/pip/_build/results?buildId=18040&view=logs&j=404e6841-f5ba-57d9-f2c8-8c5322057572&t=0219f6bf-240d-5b08-c877-377b12af5079&l=309のWindowsの例ピップテストスイート。
上にリンクされているホイールの問題には、Linuxの例がいくつかあります。
@ncoghlan参考までに、 https://github.com/pypa/wheel/issues/331で指摘した問題は、Python 3.6を使用していました(ここに何らかの関係がある場合)。
これを修正しないことを正当化する過程で、私はそれを修正するのに十分だと考えました。 :(#7668を参照してください。
@johnthagenええ、 https: //github.com/pypa/pip/pull/7668#issuecomment-579706165で言及した非ユニバーサルロケールエンコーディングの問題はPython3にも適用されます。
ただし、3.7以降では、ASCIIを使用していると主張するときにOSを信じず、代わりにUTF-8を使用するように自動的に切り替えるため、大幅に軽減されます。
最も参考になるコメント
@johnthagenええ、 https: //github.com/pypa/pip/pull/7668#issuecomment-579706165で言及した非ユニバーサルロケールエンコーディングの問題はPython3にも適用されます。
ただし、3.7以降では、ASCIIを使用していると主張するときにOSを信じず、代わりにUTF-8を使用するように自動的に切り替えるため、大幅に軽減されます。