环境
(pip Windows CI命中此)
描述
PAX格式转盘0.34.1 sdists无法在具有UnicodeEncodeError的Windows上的Python 2.7上或在非utf-8语言环境的非Windows系统上安装: https :
预期行为
来自PAX压缩包的Unicode文件名已正确编码为本地文件系统。
如何繁殖
尝试安装PAX格式的tarball,其中包含无法编码为默认代码页(Windows)或默认语言环境编码(非Windows)的文件名。
在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中提到的非通用语言环境编码问题也将适用于Python 3。
但是3.7+可以大大减轻它的负担,因为当他们声称使用ASCII时,他们不相信该操作系统,而是自动切换为使用UTF-8。
最有用的评论
@johnthagen是的,我在https://github.com/pypa/pip/pull/7668#issuecomment -579706165中提到的非通用语言环境编码问题也将适用于Python 3。
但是3.7+可以大大减轻它的负担,因为当他们声称使用ASCII时,他们不相信该操作系统,而是自动切换为使用UTF-8。