2012-01-29 10 views
16

Mam pip zainstalowany matplotlib w moim virtualenv i staram się wykreślić prosty wykres. Używam Eclipse i PyDev. Po uruchomieniu skryptu z Eclipse nie wyświetla się żaden wykres. Próbowałem sugestie zaproponowane w innych kwestiach, takich jak dodanie plt.ion(), ale to również nie działa. Próbowałem również tego samego kodu w konsoli i znowu nic. Czy to jest problem z moją konfiguracją? Jeśli tak, to jak mogę to naprawić?Matplotlib nie wyświetla wykresu w virtualenv

Kod braku jest:

import matplotlib.pyplot as plt 
    radius = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] 
    area = [3.14159, 12.56636, 28.27431, 50.26544, 78.53975, 113.09724] 
    plt.plot(radius, area) 
    plt.show() 

Kod nie jest problemem. Działa bardzo dobrze z virtualenv. Problem polega na tym, że używam go w virtualenv. Problem jest w jakiś sposób związany z moją konfiguracją. I tylko po to, aby wyjaśnić, NIE otrzymuję żadnych komunikatów o błędach. Po prostu okno się nie wyświetli.

Dzięki

+0

można rozpocząć wyświetlanie kodu, który nie powiedzie się – joaquin

+1

dzięki za edycję. O ile mogę zrozumieć teraz, twoje pytanie jest w jakiś sposób mylące, ponieważ wydaje się wskazywać, że problemem jest (także) pydev. Jeśli możesz odrzucić zaćmienie-pydev jako problem (może uruchomiony na konsoli lub bezczynnie zamiast pydev), powinieneś zmodyfikować tytuł i znaczniki, aby zmienić pydev z virtualenv. Pomogłoby to właściwym ludziom spojrzeć na to pytanie. – joaquin

+0

Jak to się nie udało? jakieś komunikaty o błędach? –

Odpowiedz

9

Twój kod działa w moim virtualenv na OSX 10.7 z Pythona 2.7:

enter image description here

Jaka wersja Pythona używasz wewnątrz virtualenv? Domyślam się, że albo nie zainstalowałeś zależności matplotlib, albo twoja instalacja zainstalowanej zależności nie została poprawnie wykonana. W Pythonie 2.7 jest to, co zrobiłem, aby zainstalować matplotlib. Czy możesz wypróbować te kroki w nowym virtualenv i sprawdzić, czy to działa?

pip install numpy 
pip install scipy 
easy_install matplotlib 
+1

Spróbuję tego (chociaż mam zainstalowany numpy i scipy), ale dlaczego użyłeś easy_install dla matplotlib i pip dla innych –

+0

Miałem problemy z instalacjami matplotlib z pipem w przeszłości. – drbunsen

+0

Hej ... działa ... :) Cały problem polegał na tym, że nie użyłem easy_install do zainstalowania matplotlib. Najwyraźniej jest problem z pip! Dziękuję za odpowiedź! –

6

Po pierwsze, warto sprawdzić:

http://matplotlib.org/faq/installing_faq.html#matplotlib-compiled-fine-but-nothing-shows-up-when-i-use-it

Aby zobaczyć, co się dzieje nie tak, sprawdź matplotlib użyciu git zamiast albo pip lub easy_install. Zrobimy bardziej ręczną instalację:

git clone [email protected]:matplotlib/matplotlib.git 
cd matplotlib 
python setup.py 

Spowoduje to wydrukowanie konfiguracji tego, co zrobiłby pip lub easy_install. Przejrzyj "OPCJONALNE ZALEŻNOŚCI ODKRYWANIA" i upewnij się, że włączone są niektóre z tych, które produkują okna (Tkinter, Gtk +, Mac OS X, Qt, Cairo itd.). Jeśli zauważysz, że żadna z nich nie jest dostępna, musisz zainstalować niektóre z tych bibliotek dla swojego systemu operacyjnego, zanim będziesz kontynuować instalację matplotlib.

Po zainstalowaniu powiedzmy, TK (na Ubuntu: sudo apt-get install tcl-dev tk-dev), a następnie po ponownym run

python setup.py 

widać, że backend Tk jest włączona. Przystąpieniem

python setup.py build && python setup.py install 

powinno Ci się i działa ... ale w tym momencie może nawet po prostu usunąć cały katalog git clone i wrócić do instalowania z pip.

+0

To zadziałało dla mnie. Zainstalowałem z pipem, a nie z easy_install. – jgomo3

+0

W moim środowisku, magicznie, globalny pakiet matplotlib korzystał z TkAgg, ale ani 'tcl-dev' ani' tk-dev' nie zostały zainstalowane. Rozwiązanie, które naprawiło problem. Użycie 'easy_install' zamiast' pip' nie spowodowało niczego. Jednak przed instalacją pakietów Tk/Tcl moja konfiguracja virtualenv nadal była w stanie używać modułu python Tk i rysować okna ... –

+0

Problemy z tcl wewnątrz virtualenvs są udokumentowane, ale nie są jeszcze naprawione. Zobacz [ten bilet dla virtualenv] (https://github.com/pypa/virtualenv/issues/93). Sugestia modyfikacji 'activate.bat', aby ustawić ścieżkę do plików TCL w podstawowej instalacji pythona, naprawiła to dla mnie. – turtlemonvh

2

Używam Ubuntu 12.04 i Python 2.7.3 na moim komputerze i kiedy używam Matplotlib 1.2.0 w moim virtualenv, show() nie działał, dopóki nie uaktualnię go do wersji 1.2.1 ... Wszystkie błędy, które miałem wcześniej, zniknęły ...

Dzięki temu można zainstalować wszystkie zależności z matplotlib:

sudo apt-get build-dep python-matplotlib 

aby pobrać najnowszą wersję matplotlib można użyć:

pip install matplotlib 

lub uaktualnić go:

pip install matplotlib --upgrade 
9

Miałem ten sam problem i instalowałem matplotlib przy użyciu easy_install zamiast pip nie zdołał go rozwiązać. W końcu dowiedziałem się, że problem polegał na tym, że matplotlib nie mógł znaleźć żadnego backendu do kreślenia.

Rozwiązałem to w następujący sposób (używam Debiana sid):

pip uninstall matplotlib 
sudo apt-get install tcl-dev tk-dev 
pip install matplotlib 
+1

To było tak proste, jak to! (działa na standardowym Ubuntu 14.04 LTS) –

+0

Jakiekolwiek rozwiązania dla OSX, które są tak proste? –

4

Jeśli masz wersję zainstalowanego w wersji systemowej python matplotlib, można link do wersji systemowej matplotlib. Na moim komputerze zrobiłem następujące:

cd $VIRTUAL_ENV/lib/python2.7/site-packages 
ln -s /usr/lib/pymodules/python2.7/matplotlib . 
ln -s /usr/lib/pymodules/python2.7/matplotlib-1.1.1rc . 

Pozwala to uniknąć wielu problemów z uzyskaniem matplotlib pracować w virtualenv ale ogranicza Cię do korzystania z wersji systemu z matplotlib (która na tym komputerze nie jest tak źle).

Ta metoda pozwala również na użycie pakietów --no-site-pack, ale nadal ma dla Ciebie pracę matplotlib.

Powiązane problemy