pip安装UnicodeDecodeError

10 投票
5 回答
29670 浏览
提问于 2025-04-18 15:20

我在新笔记本上(Win 7 64位)用pip安装beautifulsoup4的时候,遇到了这个错误:

Cleaning up...
Exception:
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "C:\Python27\lib\site-packages\pip\commands\install.py", line 278, in run

    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundl
e=self.bundle)
  File "C:\Python27\lib\site-packages\pip\req.py", line 1234, in prepare_files
    req_to_install.assert_source_matches_version()
  File "C:\Python27\lib\site-packages\pip\req.py", line 464, in assert_source_ma
tches_version
    % (display_path(self.source_dir), version, self))
UnicodeDecodeError: 'ascii' codec can't decode byte 0x9e in position 58: ordinal
 not in range(128)

Traceback (most recent call last):
  File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\Scripts\pip.exe\__main__.py", line 9, in <module>
  File "C:\Python27\lib\site-packages\pip\__init__.py", line 185, in main
    return command.main(cmd_args)
  File "C:\Python27\lib\site-packages\pip\basecommand.py", line 161, in main
    text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x9e in position 73: ordinal
 not in range(128)

我使用的命令是:pip install beautifulsoup4

你知道问题可能出在哪里吗?

附注:这个笔记本之前用来做演示,所以上面安装了多种语言的程序。

5 个回答

0

在我的情况下,问题是因为pip在读取仓库的setup.cfg文件时遇到了编码问题。最开始我使用PyCharm的虚拟环境创建工具,默认终端是gitbash,这时我一直收到这个错误。后来我在powershell中手动创建了我的虚拟环境,这样就没有再出现这个错误,不过我收到了以下警告:警告:由于编码错误,忽略了setup.cfg中的distutils配置。

1

在我的情况下,问题是因为在 requirements.txt 文件里有一些非美国ASCII字符。

7

这是一个关于 pip已知问题,截至2014年11月26日还没有发布修复。由于你正在使用Python 2.7,你可以手动修补 pip,暂时解决这个问题。

27

或者,你可以在系统上运行下面这个命令,紧接着再执行 pip install,就可以了:

export LC_ALL="en_US.UTF-8"
5

这是因为你现在的工作目录里有一些非ASCII字符,比如说:

$ pwd
$ /home/abuser/Загрузки

这个问题在pip 1.5.6版本中依然存在,真让人头疼。所以,你可以选择不去修补pip,而是直接换一个工作目录。

撰写回答