Python 2.7:LookupError:未知编码:cp65001 [重复]

Posted

技术标签:

【中文标题】Python 2.7:LookupError:未知编码:cp65001 [重复]【英文标题】:Python 2.7 : LookupError: unknown encoding: cp65001 [duplicate] 【发布时间】:2016-05-12 14:29:45 【问题描述】:

我在 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。我已经卸载并再次安装,但仍然没有成功。

【问题讨论】:

cp65001 是 Windows 对 UTF-8 的双说。您可能可以暂时重新配置您的终端以使用您的 Python 版本已知的编码(也许是旧的cp1252?),看看是否有帮助。 在 Windows 10 上启用日语输入和输出后,我在 Powershell 中自发地发生了这种情况。禁用它并重新启动 Powershell 显然解决了这个问题。 chcp 850 为我解决了这个问题 - Windows 中的其他东西随机将控制台转移到 65001(一个术语模拟器),因此设置为 850 作为重新启动控制台的解决方法。 cp65001 已成为utf-8 的别名的Python 3.8 上,您不应出现此错误。 docs.python.org/3/library/codecs.html#standard-encodings(滚动到底部) 【参考方案1】:

首先你需要升级你的点子。 您可以通过以下方式在 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的版本都无法打印,所以其他命令也报同样的错误。 尝试卸载临时 python 3,重新安装 python 2.7 并尝试 Windows power shell 可能吗?我可以只使用 CMD 在我的 Windows 10 上执行此命令而不会出现任何问题。可以输入python解释器吗? Windows 电源外壳?我没有任何想法。是的,我已经卸载了python 3,是的,我可以进入python解释器了。 好的。首先,我们必须检查您使用的是什么编码。【参考方案2】:

该错误意味着您的脚本尝试打印的 Unicode 字符无法使用当前的控制台字符编码来表示。

如果一切顺利,请在执行 pip --version 重新加载终端后尝试运行set PYTHONIOENCODING=UTF-8,将PYTHONIOENCODING 添加为值为UTF-8 的环境变量。请参阅How to set the path and environment variables in 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 回答的建议,因为您有同样的问题

【讨论】:

它也因同样的错误而失败。我根本无法使用 pip :( 在不重新加载终端的情况下执行pip --version 后尝试运行set PYTHONIOENCODING=UTF-8 谢谢 :) 它起作用了...所以我每次都需要设置它吗?你能解释一下发生了什么以及如何阻止它吗?请把它写成答案,以便我接受它作为答案。 “没有重新加载终端”是我所缺少的。 set PYTHONIOENCODING=UTF-8 命令帮我完成了,谢谢!

以上是关于Python 2.7:LookupError:未知编码:cp65001 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python 2.7 urllib.urlretrieve 未知 url 类型 https

在python 2.7中导入熊猫时出现“ValueError:未知语言环境:UTF-8” [重复]

执行Python出现LookupError: unknown encoding: cp65001解决办法

我什么时候应该在python中引发LookupError?

2020-1-4:安装Python,运行PIP出现LookupError: unknown encoding: cp65001

LookupError: unknown encoding: cp65001的问题