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

Python Unicode Decode Error when importing 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

我需要做什么?

问题是您当前的工作目录中有一个非 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, which looks like it was fixed in #3594, which I think should be in matplotlib 1.4.1+. Also see #3487。因此,假设您 $LANG 和终端是正确的,并且您的 matplotlib 是 1.4.0 或更早版本,这是最可能的原因,并更新它(通过 condapipapt-get 或更新 Anaconda 本身,无论您最初安装了它)应该是解决方法。

或者,当然,您可以升级到 Python 3,这可能会解决问题,或者给您一个更好的错误消息,告诉您到底出了什么问题。 (虽然,从扫描问题报告来看,matplotlib 1.4.0 似乎在 Python 3 中没有这个确切的错误,只有 Python 2,正如预期的那样……但它可能有一个相关的错误…)