2015-10-01 7 views
3

Я способен генерировать * .dat файл:не в состоянии построить график: Matplotlib необходим для построения

[email protected]:~/memory_profiler-0.36$ ./mprof run --python test_sl.py 
[email protected]:~/memory_profiler-0.36$ ls *.dat 
mprofile_20151001035123.dat 

Но когда я пытаюсь построить граф, то он говорит, «Matplotlib необходима для построения»

[email protected]:~/memory_profiler-0.36$ ./mprof plot --output=plot.png 
matplotlib is needed for plotting. 

Пропустил ли я что-нибудь?

Функции Я профилирование выполняется(), который находится внутри: file_to_be_profiled.py

#!/usr/bin/python 

import time 
import os, sys, commands 
from memory_profiler import profile 
from guppy import hpy 

@profile 
def run(): 
    d = {} 
    l = [] 
    hp = hpy() 
    before = hp.heap() 

    d["k1"] = 'val1' 
    d["k2"] = 10 
    count = 0 
    while (count < 9): 
     l.append(count) 
     print 'The count is:', count 
     count = count + 1 
    print "Good bye!" 
    after = hp.heap() 
    leftover = after - before 
    print leftover 

if __name__ == '__main__': 
    sys.exit(run()) 

И я вызов Run() из моего тестового сценария: test_sl.py:

#!/usr/bin/python 

import commands 

# for the time being I am running my test to profile method: run() inside file_to_be_profiled.py 
run_cmd = './file_to_be_profiled.py 
commands.getstatusoutput(run_cmd) 

I я бегу на машине ubuntu. Но apt-get install не работал для меня. Затем я сделал установку из источника. Но тогда я тоже получаю такую ​​же ошибку.

APT-получить не удалось:

[email protected]:~/memory_profiler-0.36$ sudo apt-get install -y python-matplotlib 
[sudo] password for vikaskuk: 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
Package python-matplotlib is not available, but is referred to by another package. 

This may mean that the package is missing, has been obsoleted, or 
is only available from another source 

E: Package 'python-matplotlib' has no installation candidate 
[email protected]:~/memory_profiler-0.36$ ./mprof plot --output=plot.png 
matplotlib is needed for plotting. 

Затем я попытался установить пип ... который тоже не прошел:

[email protected]:~/memory_profiler-0.36$ pip install matplotlib 
Downloading/unpacking matplotlib 
    Cannot fetch index base URL https://pypi.python.org/simple/ 
    Could not find any downloads that satisfy the requirement matplotlib 
Cleaning up... 
No distributions at all found for matplotlib 
Storing debug log for failure in /home/vikaskuk/.pip/pip.log 

Наконец я попытался установить из источника, который, кажется, удалось:

[email protected]:~/memory_profiler-0.36$ cd ../matplotlib 
[email protected]:~/matplotlib$ cd matplotlib-master/ 

(virtualenv)[email protected]:~/matplotlib/matplotlib-master$ vi INSTALL 
(virtualenv)[email protected]:~/matplotlib/matplotlib-master$ python setup.py build 
============================================================================ 
Edit setup.cfg to change the build options 

BUILDING MATPLOTLIB 
      matplotlib: yes [1.5.dev1] 
       python: yes [2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 
         4.4.5]] 
       platform: yes [linux2] 

REQUIRED DEPENDENCIES AND EXTENSIONS 
       numpy: yes [not found. pip may install it below.] 
        six: yes [using six version 1.5.2] 
       dateutil: yes [using dateutil version 2.1] 
        pytz: yes [pytz was not found. pip will attempt to install 
         it after matplotlib.] 
       tornado: yes [tornado was not found. It is required for the 
         WebAgg backend. pip/easy_install may attempt to 
         install it after matplotlib.] 
      pyparsing: yes [pyparsing was not found. It is required for 
         mathtext support. pip/easy_install may attempt to 
         install it after matplotlib.] 
       libagg: yes [pkg-config information for 'libagg' could not 
         be found. Using local copy.] 
       freetype: no [The C/C++ header for freetype2 (ft2build.h) 
         could not be found. You may need to install the 
         development package.] 
        png: no [pkg-config information for 'libpng' could not 
         be found.] 
       qhull: yes [pkg-config information for 'qhull' could not be 
         found. Using local copy.] 

OPTIONAL SUBPACKAGES 
      sample_data: yes [installing] 
       toolkits: yes [installing] 
       tests: yes [using nose version 1.3.0/using mock 1.0.1] 
     toolkits_tests: yes [using nose version 1.3.0/using mock 1.0.1] 

OPTIONAL BACKEND EXTENSIONS 
       macosx: no [Mac OS-X only] 
       qt5agg: no [PyQt5 not found] 
       qt4agg: no [PySide not found; PyQt4 not found] 
       gtk3agg: no [Requires pygobject to be installed.] 
      gtk3cairo: no [Requires cairocffi or pycairo to be installed.] 
       gtkagg: no [Requires pygtk] 
       tkagg: no [The C/C++ header for Tk (tk.h) could not be 
         found. You may need to install the development 
         package.] 
       wxagg: no [requires wxPython] 
        gtk: no [Requires pygtk] 
        agg: yes [installing] 
       cairo: no [cairocffi or pycairo not found] 
      windowing: no [Microsoft Windows only] 

OPTIONAL LATEX DEPENDENCIES 
       dvipng: no 
      ghostscript: yes [version 8.71] 
       latex: yes [version 3.1415926] 
       pdftops: no 

============================================================================ 
         * The following required packages can not be built: 
         * freetype, png 
(virtualenv)[email protected]:~/matplotlib/matplotlib-master$ python setup.py install 
============================================================================ 
Edit setup.cfg to change the build options 

BUILDING MATPLOTLIB 
      matplotlib: yes [1.5.dev1] 
       python: yes [2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 
         4.4.5]] 
       platform: yes [linux2] 

REQUIRED DEPENDENCIES AND EXTENSIONS 
       numpy: yes [not found. pip may install it below.] 
        six: yes [using six version 1.5.2] 
       dateutil: yes [using dateutil version 2.1] 
        pytz: yes [pytz was not found. pip will attempt to install 
         it after matplotlib.] 
       tornado: yes [tornado was not found. It is required for the 
         WebAgg backend. pip/easy_install may attempt to 
         install it after matplotlib.] 
      pyparsing: yes [pyparsing was not found. It is required for 
         mathtext support. pip/easy_install may attempt to 
         install it after matplotlib.] 
       libagg: yes [pkg-config information for 'libagg' could not 
         be found. Using local copy.] 
       freetype: no [The C/C++ header for freetype2 (ft2build.h) 
         could not be found. You may need to install the 
         development package.] 
        png: no [pkg-config information for 'libpng' could not 
         be found.] 
       qhull: yes [pkg-config information for 'qhull' could not be 
         found. Using local copy.] 

OPTIONAL SUBPACKAGES 
      sample_data: yes [installing] 
       toolkits: yes [installing] 
       tests: yes [using nose version 1.3.0/using mock 1.0.1] 
     toolkits_tests: yes [using nose version 1.3.0/using mock 1.0.1] 

OPTIONAL BACKEND EXTENSIONS 
       macosx: no [Mac OS-X only] 
       qt5agg: no [PyQt5 not found] 
       qt4agg: no [PySide not found; PyQt4 not found] 
       gtk3agg: no [Requires pygobject to be installed.] 
      gtk3cairo: no [Requires cairocffi or pycairo to be installed.] 
       gtkagg: no [Requires pygtk] 
       tkagg: no [The C/C++ header for Tk (tk.h) could not be 
         found. You may need to install the development 
         package.] 
       wxagg: no [requires wxPython] 
        gtk: no [Requires pygtk] 
        agg: yes [installing] 
       cairo: no [cairocffi or pycairo not found] 
      windowing: no [Microsoft Windows only] 

OPTIONAL LATEX DEPENDENCIES 
       dvipng: no 
      ghostscript: yes [version 8.71] 
       latex: yes [version 3.1415926] 
       pdftops: no 

============================================================================ 
         * The following required packages can not be built: 
         * freetype, png 

Но когда я пытаюсь построить график, я попал в первоначальный вопрос:

[email protected]:~/matplotlib/matplotlib-master$ cd ../../memory_profiler-0.36 
[email protected]:~/memory_profiler-0.36$ ./mprof plot --output=plot.png 
matplotlib is needed for plotting. 

Я был в состоянии успешно сделать APT-получить обновление (там был какой-то вопрос брандмауэра, а затем я успешно сделал: Sudo APT-получить установку -y питон-Matplotlib.

Но до сих пор я получаю некоторые проблемы во время работы mprof:

[email protected]:~/memory_profiler-0.36$ ./mprof plot --output=plot.png 
Using last profile data. 
Traceback (most recent call last): 
    File "./mprof", line 494, in <module> 
    actions[get_action()]() 
    File "./mprof", line 454, in plot_action 
    pl.figure(figsize=(14, 6), dpi=90) 
    File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in figure 
    **kwargs) 
    File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 79, in new_figure_manager 
    return new_figure_manager_given_figure(num, figure) 
    File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 87, in new_figure_manager_given_figure 
    window = Tk.Tk() 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__ 
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
_tkinter.TclError: no display name and no $DISPLAY environment variable 

Почему мне нужно установить дисплей? Я работаю над машиной, размещенной на Ubuntu.

+1

На самом деле, ваша сборка из источника также не удалась. У вас нет 'freetype' или' libpng', установленных на вашем компьютере, поэтому matplotlib не может построить. 'pip install' столкнулся с отдельной проблемой (вы находитесь за брандмауэром?), но вскоре после этого ударит ту же самую защелку. Я не уверен, почему у вас возникают проблемы с установкой через диспетчер пакетов, но apt-get install 'libfreetype6-dev',' libpng-dev' и 'python-tk', а затем вы должны иметь возможность строить из источника , –

ответ

1

Вам необходимо установить matplotlib, как указано (this error in thrown by mprof when it can't find matplotlib).

Вы можете сделать это, используя пип pip install matplotlib (возможно, потребуется префикс это с sudo) или ваш менеджер пакетов:

  • sudo apt-get install -y python-matplotlib на Debian, Ubuntu и производных.
  • sudo yum install -y python-matplotlib RHEL, CentOS и производные.
+0

Я бегу на машине ubuntu. Но apt-get install не работал для меня. Затем я сделал установку из источника. Редактирование вопроса с помощью шагов, которые я сделал. – vikas

+0

@vikas Убедитесь, что вы объяснили, почему 'apt-get install' не работает для вас. Есть ли сообщение об ошибке? –

+0

В моей организации может быть какой-то брандмауэр ... вот почему apt-get потерпел неудачу. Таким образом, я попытался установить источник, который выглядит так, как будто это удалось. Но тогда и оригинальная проблема сохраняется. Пожалуйста, см. Мой оригинальный вопрос .... я сейчас отредактировал с тем, что я сделал. – vikas

0

У меня была та же проблема.Я использовал memory_profiler Lib печатать эти команды (mprof run runner.py и mprof plot) и получил сообщение «Matplotlib необходимо для построения»

Я пытался избавиться от этой проблемы следующего совета, который я нашел здесь, но в итоге я решил эту проблему завершила эти простые шаги:

  1. удалять файлы в /usr/lib64/python2.7/site-packages/, связанный с Matplotlib (или вы можете удалить Matplotlib используя обычный способ)

  2. использования sudo yum-builddep python-matplotlib установить связанный pa ckages (были установлены 222 пакетов, если вам нужно APT-получить, вам нужна эта команда: sudo apt-get build-dep python-matplotlib)

  3. установки Matplotlib sudo yum reinstall python-matplotlib (или использовать команду установки, с APT-получить: sudo apt-get install python-matplotlib)

I поверьте, это поможет.

0

У меня была такая же проблема на свежей установке Ubuntu 16.04. Чтобы решить эту проблему, я установил SciPy так: sudo pip install scipy

Кроме того, я должен был установить tkinter LIB, как это: sudo apt-get install python-tk

я думаю где-то в прошлом, Matplotlib была scipy как зависимость, но теперь это только имеет numpy, а mprof plot - scipy.