导入matplotlib时出现Python Unicode解码错误

时间:2015-05-07 07:53:26

标签: python unicode matplotlib

我尝试在我的python脚本中使用matplotlib但是我在终端中遇到了这个错误:

Traceback (most recent call last):
  File "graphique.py", line 5, in <module>
    import matplotlib.pyplot as plt
  File "/home/xavier/anaconda/lib/python2.7/site-packages/matplotlib/__init__.py", line 1048, in <module>
    rcParams = rc_params()
  File "/home/xavier/anaconda/lib/python2.7/site-packages/matplotlib/__init__.py", line 897, in rc_params
    fname = matplotlib_fname()
  File "/home/xavier/anaconda/lib/python2.7/site-packages/matplotlib/__init__.py", line 748, in matplotlib_fname
    fname = os.path.join(os.getcwd(), 'matplotlibrc')
  File "/home/xavier/anaconda/lib/python2.7/posixpath.py", line 80, in join
    path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 66: ordinal not in range(128)

这是我的python代码,我只是写了

# -*- coding: utf-8 -*-
import numpy as np
from math import *
import matplotlib.pyplot as plt

我该怎么做?

1 个答案:

答案 0 :(得分:3)

问题是您当前的工作目录中有非ASCII字符。

实际上这根本不应该是一个问题,但这是因为其他事情的结合:

  • matplotlib想要查看当前工作目录中的本地matplotlibrc文件,该文件会覆盖您的默认文件。
  • Python认为您正在使用C语言环境而不是Ubuntu 14应该默认的优秀UTF-8语言环境。

因此,为了快速解决方法,只需从不同的目录运行脚本,该目录中没有非ASCII字符。

如果您确实想解决问题:

  • 确保您拥有最新的Ubuntu 14,Anaconda和matplotlib。
  • 来自shell,echo $LANG。结果应为空或其中包含UTF-8的内容。如果没有,请搜索AskUbuntu如何解决这个问题。
  • 确保您的shell和终端都设置为UTF-8。

通过快速搜索matplotlib问题,这看起来像#3516,看起来已修复in #3594,我认为应该在matplotlib 1.4中。 1+。另请参阅#3487。因此,假设您$LANG和终端是正确的,并且您的matplotlib是1.4.0或更早,这是最可能的原因,并更新它(通过conda或{{1} }或pip或更新Anaconda本身,无论你最初安装它,都应该是修复。

或者,当然,您可以升级到Python 3,这可能会解决问题,或者为您提供更好的错误消息,告诉您究竟出了什么问题。 (虽然从扫描问题报告开始,看起来apt-get 1.4.0在Python 3中没有这个确切的错误,只有Python 2,正如预期的那样...但它可能有相关的错误...)