2011-12-05 1 views
7

Da ubuntu 10.04, ho installato pylab con easy_install. Dopo qualche aggiornamento, posso importare pylab. Per prima cosa ho run ipython installato dal easy_install:pylab ImportError: nessun modulo denominato _thread

$ ipython 
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
Type "copyright", "credits" or "license" for more information. 

IPython 0.11 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object', use 'object??' for extra details. 

poi cerco di importare matplotlib

In [1]: import matplotlib 

In [2]: matplotlib.__version__ 
Out[2]: '1.0.1' 

Ma durante l'importazione failes pylab come segue:

In [3]: import matplotlib.pylab 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
/home/claire/<ipython-input-3-1d30b9aee20b> in <module>() 
----> 1 import matplotlib.pylab 

/usr/local/lib/python2.6/dist-packages/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib /pylab.py in <module>() 
    218  silent_list, iterable, dedent 
    219 
--> 220 from matplotlib import mpl # pulls in most modules 
    221 
    222 from matplotlib.dates import date2num, num2date,\ 

/usr/local/lib/python2.6/dist-packages/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib /mpl.py in <module>() 
     1 from matplotlib import artist 
     2 from matplotlib import axis 
----> 3 from matplotlib import axes 
     4 from matplotlib import cbook 
     5 from matplotlib import collections 

/usr/local/lib/python2.6/dist-packages/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib /axes.py in <module>() 
    17 import matplotlib.colors as mcolors 
    18 import matplotlib.contour as mcontour 
---> 19 import matplotlib.dates as mdates 
    20 from matplotlib import docstring 
    21 import matplotlib.font_manager as font_manager 

/usr/local/lib/python2.6/dist-packages/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/dates.py in <module>() 
    117 import matplotlib.ticker as ticker 
    118 
--> 119 from dateutil.rrule import rrule, MO, TU, WE, TH, FR, SA, SU, YEARLY, \ 
    120  MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY 
    121 from dateutil.relativedelta import relativedelta 

/usr/local/lib/python2.6/dist-packages/python_dateutil-2.0-py2.6.egg/dateutil/rrule.py in <module>() 
    11 import datetime 
    12 import calendar 
---> 13 import _thread 
    14 import sys 
    15 

ImportError: No module named _thread 

Questo può essere un problema python_dateutil . Rimuovo la vecchia versione (1.4.3) installata con Synaptic ma questo non risolve il problema.

Come posso risolvere il problema senza reinstallare tutto? Grazie. Jean-Patrick

risposta

9

È causato da dateutil.

Come puoi vedere, hai installato dateutil 2.0 usando easy_install, ma non è compatibile con python 2.x. Dovresti disinstallare (o semplicemente eliminare l'intera cartella) la versione 2.0 e poi andare al suo homepage e scaricare la versione 1.5, quindi installarla manualmente.

Versione 2.0 è per Python 3.x, che è possibile trovare anche nella home page.

--UPDATE--

dateutil 2.1 è fuori e ora è NON necessario per utilizzare 1,5 più, se si può stare six avere installato troppo :)

+1

Come nota a margine, non inquinare l'installazione del sistema usando 'easy_install' come questo. Utilizzare [virtualenv] (https://github.com/pypa/virtualenv). –

+1

@felix Yan: Grazie. Ciò significa che easy_install installa un modulo incompatibile, strano. –

+0

@Noufal Ibrahim: Questa è un'idea, dovrò imparare questo. Sai se i perf sono buoni? Suppongo che virtualenv non significhi macchina virtuale. –

3

ho ottenuto che venga risolta semplicemente:

pip install python-dateutil 

io corro Python 2.7.3 (su OS X da Homebrew) e il dateutil installato sembrava essere serie 2.x (es. non dovrebbe essere compatibile con questo Python). Ma funziona.

Ecco il set completo di comandi per ottenere matplotlib et.al. in esecuzione su OS X Mountain Lion:

brew install python 
brew link --overwrite python 
brew tap samueljohn/python 
brew install scipy 
pip install python-dateutil 

A prova:

Afferra una fonte .py da here.

python file.py 

dovrebbe aprire una finestra GUI con curve in esso.