查找错误:未知编码:cp0

7

我使用的是window 7操作系统,python版本是2.7.2,pandas版本是0.11.0,django版本是1.4,同时还使用了wsgi和apache 2.2。我有一个pandas脚本,如果我直接用python运行它或者在ipython中使用%run命令运行都能正常工作。但是,当我在视图中调用pandas时,会出现“LookupError: unknown encoding: cp0”的错误。这种情况只会在视图中使用pandas中的ols函数时发生。我也有点困惑为什么py3compat.py会出现在这里,因为我使用的是python 2.7。此外,我看到一些帖子提到需要用str()将打印的变量包装起来,但我不确定这如何应用于此处。完整的回溯信息如下:

Traceback (most recent call last):
model = pd.ols(y=df_loan['LogSpread'], x=df_loan['Dummy Rating'])
File "C:\\Python27\\lib\\site-packages\\pandas\\stats\\interface.py", line 135, in ols
return klass(**kwargs)
File "C:\\Python27\\lib\\site-packages\\pandas\\stats\\ols.py", line 43, in __init__
  import statsmodels.api as sm
File "C:\\Python27\\lib\\site-packages\\statsmodels-0.5.0-py2.7-win32.egg\\statsmodels\\api.py", line 3, in <module>
  import regression
File "C:\\Python27\\lib\\site-packages\\statsmodels-0.5.0-py2.7-win32.egg\\statsmodels\\regression\\__init__.py", line 1, in <module>
  from linear_model import yule_walker
File "C:\\Python27\\lib\\site-packages\\statsmodels-0.5.0-py2.7-win32.egg\\statsmodels\\regression\\linear_model.py", line 41, in <module>
  import statsmodels.base.model as base
File "C:\\Python27\\lib\\site-packages\\statsmodels-0.5.0-py2.7-win32.egg\\statsmodels\\base\\model.py", line 10, in <module>
from statsmodels.formula import handle_formula_data
File "C:\\Python27\\lib\\site-packages\\statsmodels-0.5.0-py2.7-win32.egg\\statsmodels\\formula\\__init__.py", line 4, in <module>
  from formulatools import handle_formula_data
File "C:\\Python27\\lib\\site-packages\\statsmodels-0.5.0-py2.7-win32.egg\\statsmodels\\formula\\formulatools.py", line 2, in <module>
  from patsy import dmatrices
File "build\\bdist.win32\\egg\\patsy\\__init__.py", line 70, in <module>
  _reexport("patsy." + child)
File "build\\bdist.win32\\egg\\patsy\\__init__.py", line 61, in _reexport
__import__(modname)
File "build\\bdist.win32\\egg\\patsy\\highlevel.py", line 18, in <module>
File "build\\bdist.win32\\egg\\patsy\\design_info.py", line 17, in <module>
File "build\\bdist.win32\\egg\\patsy\\util.py", line 385, in <module>
File "C:\\Python27\\lib\\site-packages\\ipython-0.13.1-py2.7.egg\\IPython\\__init__.py", line 46, in <module>
  from .frontend.terminal.embed import embed
File "C:\\Python27\\lib\\site-packages\\ipython-0.13.1-py2.7.egg\\IPython\\frontend\\terminal\\embed.py", line 39, in <module>
  from IPython.frontend.terminal.interactiveshell import TerminalInteractiveShell
File "C:\\Python27\\lib\\site-packages\\ipython-0.13.1-py2.7.egg\\IPython\\frontend\\terminal\\interactiveshell.py", line 33, in <module>
  from IPython.core.interactiveshell import InteractiveShell, InteractiveShellABC
File "C:\\Python27\\lib\\site-packages\\ipython-0.13.1-py2.7.egg\\IPython\\core\\interactiveshell.py", line 61, in <module>
  from IPython.core.prompts import PromptManager
File "C:\\Python27\\lib\\site-packages\\ipython-0.13.1-py2.7.egg\\IPython\\core\\prompts.py", line 138, in <module>
  HOME = py3compat.str_to_unicode(os.environ.get("HOME","//////:::::ZZZZZ,,,~~~"))
File "C:\\Python27\\lib\\site-packages\\ipython-0.13.1-py2.7.egg\\IPython\\utils\\py3compat.py", line 18, in decode
  return s.decode(encoding, "replace")
LookupError: unknown encoding: cp0

感谢您!

这非常奇怪。在控制台中执行 chcp 命令以查看当前使用的代码页。 - Paulo Bu
活动代码页:437 - user1604594
我进行了更深入的调试。似乎我一开始就无法导入IPython。回溯从 .frontend.terminal.embed import embed 开始。 - user1604594
1
所以这是一个可怕的解决方案,但它在我的机器上起作用。我进入了文件IPython\core\prompts.py并将HOME = py3compat.str_to_unicode(os.environ.get("HOME","//////:::::ZZZZZ,,,~~~"))更改为HOME = py3compat.str_to_unicode(os.environ.get("HOME","//////:::::ZZZZZ,,,~~~"), 'cp437')。我也对用户和主机名进行了相同的更改,这些代码在稍后的几行中。 - user1604594
4个回答

10

关闭Spyder。

打开Anaconda Prompt并输入:set PYTHONIOENCODING=UTF-8。 或者,创建一个名为PYTHONIOENCODING的环境变量,值为UTF-8

输入spyder重新启动。


0

我也遇到了这个问题,尝试了很多方法,但都失败了。然而,当我重新启动Spyder并再次运行程序时,这个问题就解决了。太神奇了!我建议你也可以试试这种方法。


0

使用conda create -n py2 python=2.7 anaconda jupyter spyder PYTHONIOENCODING=UTF-8命令创建环境。 但是,这个命令不起作用: PackagesNotFoundError: 当前渠道中找不到以下软件包:

  • pythonioencoding=UTF-8

目前你的回答不够清晰,请编辑并添加更多细节以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community
这并不能真正回答问题。如果您有不同的问题,可以通过点击提问来提出。要在此问题有新的答案时收到通知,您可以 关注此问题。一旦您有足够的声望,您还可以添加悬赏以吸引更多关注此问题。- 来自评审 - Rishabh Deep Singh

0

我也遇到了这个问题,使用Spyder时,但是当我打开一个新的控制台时,它就可以正常工作了,所以很容易解决。


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