本文主要是记录在linux下安装matlablib中所遇到的坑,给大家一个参考。
我的使用场景是 linux + python2.7 + django 1.10 + matlib
坑1:matlablib 安装失败 ,错误信息提示 subprocess32 安装失败
命令 python -m pip install matlablib , 死活安装不成功,老是提示 subprocess32 中 pipe2 无效 和 O_CLOEXEC 错误。
解决办法:
1、下载 subprocess32-3.2.7.tar.gz : python2.7 -m pip download subprocess32
2、解压缩 tar -xzvf subprocess32-3.2.7.tar.gz
3、修改 _posixsubprocess.c , 将#ifdef HAVE_PIPE2
到 #endif 都注释掉
4、 手工安装subprocess32: cd subprocess32 ; python setup.py install
5、如果还安装失败,就将O_CLOEXEC 相关的代码也注释掉,然后再安装
参考:https://github.com/google/python-subprocess32/issues/12
坑2 : 安装matlablib成功了,但是 抛 import error : no module name tkinter
原因: linux上没有安装 tkinter
异常位置 :/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_tkagg.py : from six.moves import tkinter
解决办法:
解1 : 一般情况下,安装了tkinter 就可以解决了,所以可以手工安装下tkinter
sudo yum -y intall tkinter .
注意,安装完成之后查看下版本 rpm -qa | grep tkinter
如果version >= 3.0 import Tkinter; 如果版本<3.0 , import tkinter ;
总之,两种情况都试一下。
解2: 当第一种方式解决不了的情况下,我们就要手动安装 tcl 和 tk 了, 具体参见 http://www.qttc.net/201304306.html
1、下载 tcl, tk包,解压缩, cd tcl/unix 中,./configre ;make ;sudo make install
2、cd python2.7 的目录,修改安装配置文件 vim Modules/Setup.dist,将下面几行取消注释