本文主要是記錄在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,將下面幾行取消注釋