Python 2.7:查找错误:未知编码:cp65001。

62

我已经在 Windows 8.1(64 位)上安装了 Python 2(64 位),想知道 pip 的版本,于是我运行了 pip --version,但出现了错误。

    C:\Users\ADMIN>pip --version
Traceback (most recent call last):
  File "c:\dev\python27\lib\runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\dev\python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\dev\Python27\Scripts\pip.exe\__main__.py", line 5, in <module>
  File "c:\dev\python27\lib\site-packages\pip\__init__.py", line 15, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "c:\dev\python27\lib\site-packages\pip\vcs\mercurial.py", line 10, in <module>
    from pip.download import path_to_url
  File "c:\dev\python27\lib\site-packages\pip\download.py", line 35, in <module>
    from pip.utils.ui import DownloadProgressBar, DownloadProgressSpinner
  File "c:\dev\python27\lib\site-packages\pip\utils\ui.py", line 51, in <module>
    _BaseBar = _select_progress_class(IncrementalBar, Bar)
  File "c:\dev\python27\lib\site-packages\pip\utils\ui.py", line 44, in _select_progress_class
    six.text_type().join(characters).encode(encoding)
LookupError: unknown encoding: cp65001

注意:相同的命令可用于Python 3。我已经卸载并重新安装了两者,但仍然没有成功。


4
"cp65001"是 Windows 中对 UTF-8 的说法。你可以暂时重新配置终端使用 Python 版本已知的编码(也许是老古董的"cp1252"?)来查看是否有所帮助。 - tripleee
1
在Windows 10上启用日语输入和输出后,我在Powershell中自发地遇到了这个问题。禁用它并重新启动Powershell显然解决了这个问题。 - WAF
1
chcp 850 这对我解决了问题 - Windows 中的其他东西随机将控制台切换到65001(一个终端仿真器),因此将其设置为850作为重新启动控制台的权宜之计。 - user337598
在Python 3.8中,cp65001已成为utf-8的别名,所以你不应该遇到这个错误。请参考此链接 https://docs.python.org/3/library/codecs.html#standard-encodings (滚动到底部)。 - user3064538
2个回答

131

这个错误意味着你的脚本尝试打印的Unicode字符在当前的控制台字符编码中无法表示。

同时尝试在执行pip --version之后运行set PYTHONIOENCODING=UTF-8,如果一切顺利,请将PYTHONIOENCODING添加为值为UTF-8的环境变量。请参阅如何设置Windows中的路径和环境变量文章以获取有关如何添加Windows变量的信息。

注意:对于PowerShell,请使用$env:PYTHONIOENCODING = "UTF-8"

另外,您可以尝试使用pip安装win-unicode-console

pip install win-unicode-console

接着重新载入您的终端,然后尝试执行 pip --version

不过,您可以遵循Windows cmd encoding change causes Python crash答案中的建议,因为您有相同的问题。


3
它也因为同样的错误而失败。我完全无法使用pip :( - Himanshu Bhandari
13
在执行完pip --version之后,尝试运行set PYTHONIOENCODING=UTF-8命令,无需重新启动终端。该命令旨在设置Python的输入输出编码为UTF-8格式。 - Andriy Ivaneyko
我所缺少的是“无需重新加载终端”。 - Himanshu Bhandari
@Himanshu 祝你好运! - Andriy Ivaneyko
2
PYTHONIOENCODING=UTF-8 这个命令对我有用,谢谢! - Pauli
显示剩余8条评论

1

首先,您需要升级pip。 在Windows上,您可以这样做:

python -m pip install -U pip

然后手动进入您的脚本文件夹,在该文件夹中输入命令行(可以通过点击Shift +右鼠标按钮->打开控制台窗口来完成),然后您应该使用以下命令之一。
pip -V
pip --version

这将导致

pip 7.1.2 from c:\python27\lib\site-packages (python 2.7)

如果你仍然遇到问题,可以尝试删除当前的Python PATH,并添加一个新的Python 2.7路径。

我无法打印出pip的版本,因此其他命令也会出现相同的错误。 - Himanshu Bhandari
1
试着卸载临时的Python 3,重新安装Python 2.7,然后尝试使用Windows PowerShell?我在我的Windows 10上只使用CMD命令就可以做到这一点,没有任何问题。你能进入Python解释器吗? - user5864559
Windows PowerShell?我不知道。是的,我已经卸载了Python 3,也可以进入Python解释器。 - Himanshu Bhandari
好的,首先我们必须检查你正在使用什么编码。 - user5864559

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接