问题:
具体的问题是这样的:
我的系统是Ubuntu14.04 的64位系统,python3.4版本下,想使用matplotlib来做图。
由于matplotlib依赖numpy和python的图像库PIL,因此我先安装numpy和PIL然后,再安装matplotlib,
这里附上我的安装matplotlib的shell命令
#安装科学计算库numpy sudo pip3 install numpy #安装图像处理库PIL sudo apt-get install python3.4-dev -y sudo apt-get install libjpeg8-dev zlib1g-dev libfreetype6-dev -y sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib sudo apt-get install python3-pil #安装画图库matplotlib sudo pip3 install matplotlib
但是发现虽然安装成功(在python3的shell交互环境下, import matplotlib 是可以的),但是 执行如下语句
from matplotlib import pyplot as plt
报错:
"/usr/local/lib/python3.4/dist-packages/matplotlib-1.5.1-py3.4-linux-x86_64.egg/matplotlib/backends/backend_gtk3.py", line 58, in
cursors.MOVE : Gdk.Cursor.new(Gdk.CursorType.FLEUR),
TypeError: constructor returned NULL
解决方法:
首先安装python3-dev,再安装numpy,再安装PIL,最后把安装matplotlib的命令前面加上相关依赖库的命令
sudo apt-get install libfreetype6-dev libxft-dev -y
并将命令
sudo pip3 install matplotlib
替换为
sudo apt-get install python3-matplotlib -y
下面附上最终正确安装的shell脚本
#!/bin/bash sudo apt-get update sudo apt-get install python3-pip -y #安装科学计算库numpy sudo apt-get install python3.4-dev -y sudo pip3 install numpy #安装图像处理库PIL sudo apt-get install python3.4-dev -y sudo apt-get install libjpeg8-dev zlib1g-dev libfreetype6-dev -y sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib sudo apt-get install python3-pil -y #安装画图库matplotlib sudo apt-get install libfreetype6-dev libxft-dev -y sudo apt-get install python3-matplotlib -y #sudo pip3 install matplotlib
如果后面使用中还出现错误,请参照下面的解决办法:
解决方法网址: https://www.zhihu.com/question/46560194/answer/101967730?group_id=717491965033218048
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt
fig = plt.figure()
import matplotlib
matplotlib.use('Agg') # or matplotlib.use("Pdf")
import matplotlib.pyplot as plt