python matlablib安裝踏坑記


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

            

    _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
    -L/usr/local/lib \
    -I/usr/local/include \
    -ltk8.5 -ltcl8.5 \                         //修改成實際安裝的版本
    -lX11
  3、make install , 重新安裝python,即可解決問題
 
坑4: django后台運行 matlablib畫圖,會報“no display name and no $DISPLAY environment variable”  錯誤
  解決辦法:
         將 from matplotlib import pyplot as plt
    修改成
     import matplotlib
    matplotlib.use('Agg')
    from matplotlib import pyplot as plt
 
坑5 : django發布成功后,用域名訪問,出現錯誤“DisallowedHost at / Invalid HTTP_HOST header”
     解決辦法:
         修改 項目中的 setting.py , 修改成: ALLOWED_HOSTS = ['*']

     

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM