pylab导入错误:没有名为_thread的模块

7 投票
2 回答
14102 浏览
提问于 2025-04-17 07:42

从Ubuntu 10.04开始,我通过easy_install安装了pylab。经过一些升级后,我可以导入pylab。首先,我运行了通过easy_install安装的ipython:

$ 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.

然后我尝试导入matplotlib。

In [1]: import matplotlib

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

但是在导入pylab时出现了以下错误:

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

这可能是python_dateutil的问题。我删除了通过synaptic安装的旧版本(1.4.3),但这并没有解决问题。

我该如何在不重新安装所有东西的情况下修复这个问题呢?谢谢。

Jean-Patrick

2 个回答

3

我通过简单的方式解决了这个问题:

pip install python-dateutil

我在使用Python 2.7.3(通过Homebrew在OS X上安装),而我安装的dateutil似乎是2.x系列(也就是说,它应该和这个Python不兼容)。但它居然可以正常工作。

以下是在OS X Mountain Lion上让matplotlib等库运行的完整命令:

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

测试方法:

这里下载一个.py源文件。

python file.py

应该会打开一个带有曲线的图形界面窗口。

9

这个问题是由 dateutil 引起的。

你可以看到,你用 easy_install 安装了 dateutil 的 2.0 版本,但这个版本和 Python 2.x 不兼容。你应该卸载(或者直接删除整个文件夹)这个 2.0 版本,然后去它的 主页 下载 1.5 版本,手动安装它。

2.0 版本是为 Python 3.x 准备的,你也可以在主页上找到这个版本。

--更新--

dateutil 的 2.1 版本已经发布,现在不再需要使用 1.5 版本了,只要你能接受同时安装 six :)

撰写回答