导入matplotlib时出现Python Unicode解码错误
我尝试在我的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。
- 从外壳,
echo $LANG
。结果应该为空或其中包含一些东西UTF-8
。如果没有,请搜索AskUbuntu以获取解决方法。 - 确保您的外壳和终端都设置为UTF-8。
从问题的快速搜索中
matplotlib
,它看起来像#3516,看起来像是在#3594中修复的,我认为应该在matplotlib
1.4.1+中。另请参阅#3487。因此,假设您$LANG
和终端是正确的,并且您的版本matplotlib
是1.4.0或更早版本,则这是最可能的原因,应该对其进行更新(通过conda
或(pip
或)apt- get
或更新Anaconda本身,但是您最初安装了它)才是修复程序。或者,当然,您可以升级到Python
3,这可能会解决问题,或者为您提供更好的错误消息,告诉您确切的错误。(不过,从扫描问题报告matplotlib
中看,似乎1.4.0在Python
3中没有这个确切的错误,仅是Python 2中没有出现这个错误,但是可能有一个相关的错误……)