Pip: PAXsdistを使用する一部の環境でのファイル名エンコーディングエラー

作成日 2020年01月28日  ·  3コメント  ·  ソース: pypa/pip

環境

  • pipバージョン:任意
  • Pythonバージョン:2.7
  • OS:Windows、CロケールのWindows以外

(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の例がいくつかあります。

python 2 only bug

最も参考になるコメント

@johnthagenええ、 https: //github.com/pypa/pip/pull/7668#issuecomment-579706165で言及した非ユニバーサルロケールエンコーディングの問題はPython3にも適用されます。

ただし、3.7以降では、ASCIIを使用していると主張するときにOSを信じず、代わりにUTF-8を使用するように自動的に切り替えるため、大幅に軽減されます。

全てのコメント3件

@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を使用するように自動的に切り替えるため、大幅に軽減されます。

このページは役に立ちましたか?
0 / 5 - 0 評価