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 或更早版本,这是最可能的原因,并更新它(通过 conda
或 pip
或 apt-get
或更新 Anaconda 本身,无论您最初安装了它)应该是解决方法。
或者,当然,您可以升级到 Python 3,这可能会解决问题,或者给您一个更好的错误消息,告诉您到底出了什么问题。 (虽然,从扫描问题报告来看,matplotlib
1.4.0 似乎在 Python 3 中没有这个确切的错误,只有 Python 2,正如预期的那样……但它可能有一个相关的错误…)
我尝试在我的 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 或更早版本,这是最可能的原因,并更新它(通过 conda
或 pip
或 apt-get
或更新 Anaconda 本身,无论您最初安装了它)应该是解决方法。
或者,当然,您可以升级到 Python 3,这可能会解决问题,或者给您一个更好的错误消息,告诉您到底出了什么问题。 (虽然,从扫描问题报告来看,matplotlib
1.4.0 似乎在 Python 3 中没有这个确切的错误,只有 Python 2,正如预期的那样……但它可能有一个相关的错误…)