【问题标题】:Error while upgrading pip: UnicodeDecodeError: 'utf-8' codec can't decode byte升级 pip 时出错:UnicodeDecodeError: 'utf-8' codec can't decode byte
【发布时间】:2017-07-11 22:08:40
【问题描述】:

我刚刚在 Windows 10 上安装了 python,我正在尝试升级 pip。

我的 Windows 用户名包含希伯来语字符...

当我尝试运行时:

python -m pip install --upgrade pip

我得到这个错误:

Collecting pip
Using cached pip-8.0.2-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 7.1.2
Exception:
Traceback (most recent call last):
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\basecommand.py", line 211, in main
    status = self.run(options, args)
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\commands\install.py", line 311, in run
    root=options.root_path,
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\req\req_set.py", line 640, in install
    requirement.uninstall(auto_confirm=True)
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\req\req_install.py", line 673, in uninstall
    for path in pip.wheel.uninstallation_paths(dist):
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\wheel.py", line 512, in unique
    for item in fn(*args, **kw):
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\wheel.py", line 531, in uninstallation_paths
    r = csv.reader(FakeFile(dist.get_metadata_lines('RECORD')))
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1619, in get_metadata_lines
    return yield_lines(self.get_metadata(name))
  File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1616, in get_metadata
    return self._get(self._fn(self.egg_info, name)).decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf2 in position 22365: invalid continuation byte
You are using pip version 7.1.2, however version 8.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

我猜这与我的希伯来语 Windows 用户名有关,对吗?

我可以在不打开新的 windows 用户的情况下升级 pip 吗?

【问题讨论】:

  • 请更改您的标题,例如pip --upgrade 抛出 "UnicodeDecodeError" 但任何东西都比当前的要好。否则有趣的问题...

标签: python windows utf-8 pip decode


【解决方案1】:

它看起来像 pip 中的一个错误,它假设其元数据存储为 UTF-8。 相反,您的用户名似乎被编码为“windows-1255”。

您可以尝试以下方法:

  1. 备份C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\_vendor\pkg_resources\__init__.py
  2. 转到线路:1616
  3. utf-8 更改为mbcs
  4. 重新运行升级

【讨论】:

  • 问题是distlib函数_csv_open使用默认的语言环境编码写入了已安装文件的RECORD。永远不要依赖它,尤其是在 Windows 上,因为 ANSI 语言环境几乎一文不值。我很惊讶 PEP 376 和 427 对强制执行 UTF-8 对此文件的内容没有任何意见。
  • 我建议将 site-packages\pip-7.1.2.dist-info\RECORD 转换为 UTF-8,即将其读取为 'cp1255' 并将其写回为 'utf-8'
  • 应该更改哪一行?不幸的是,这个答案对于 Python36-32 来说已经过时了。
  • @Moberg 您使用的是哪个版本的 Pip?
  • 哦等等,pip的升级没有问题,只是在尝试安装包z3-solver时:/(运行pip版本9.0.1)
猜你喜欢
  • 2018-05-21
  • 1970-01-01
  • 2013-11-11
  • 2022-01-13
  • 1970-01-01
  • 2021-09-23
  • 2021-11-24
  • 2020-12-26
相关资源
最近更新 更多