Mac OS X上的Pandas安装:ImportError(无法导入名称哈希表)

时间:2013-01-28 17:51:56

标签: python hashtable pandas cython importerror

我想从源代码构建pandas而不是使用包管理器,因为我对贡献很感兴趣。 第一次我试图建立大熊猫,这些是我采取的步骤:

1)创造了virtualenv mkvirtualenv --no-site-packages pandas

2)激活了virtualenv

3)安装了Anaconda CE。但是,它安装在〜/ anaconda中。

4)克隆的大熊猫

5)建立了C扩展

(pandas)ems ~/.virtualenvs/pandas/localrepo/pandas> ~/anaconda/bin/python setup.py build_ext --inplace

6)建造了熊猫

(pandas)ems ~/.virtualenvs/pandas/localrepo/pandas> ~/anaconda/bin/python setup.py build

7)在主分支上运行nosetests

测试失败: (熊猫)ems~ / .virtualenvs / pandas / localrepo / pandas>鼻试熊猫     Ë     ================================================== ====================     错误:失败:ValueError(numpy.dtype的大小错误,请尝试重新编译)     -------------------------------------------------- --------------------     Traceback(最近一次调用最后一次):     在loadTestsFromName中输入文件“/Users/EmilyChen/.virtualenvs/pandas/lib/python2.7/site-packages/nose/loader.py”,第390行     addr.filename,addr.module)     在importFromPath中输入文件“/Users/EmilyChen/.virtualenvs/pandas/lib/python2.7/site-packages/nose/importer.py”,第39行     return self.importFromDir(dir_path,fqname)     在importFromDir中输入文件“/Users/EmilyChen/.virtualenvs/pandas/lib/python2.7/site-packages/nose/importer.py”,第86行     mod = load_module(part_fqname,fh,filename,desc)     文件“/Users/EmilyChen/.virtualenvs/pandas/localrepo/pandas/pandas/init.py”,第6行,在     来自。 import hashtable,tslib,lib     在init pandas.hashtable文件“numpy.pxd”,第156行(pandas / hashtable.c:20354)     ValueError:numpy.dtype的大小错误,请尝试重新编译


在0.001s中进行1次测试

失败(错误= 1)

PyData邮件列表上有人说:

  

看起来你已经在你的机器上的其他地方安装了NumPy,并且AnacondaCE在virtualenv中的表现不佳。您收到的错误是一条Cython错误消息,当它构建的NumPy版本与您系统上安装的版本不匹配时发生 - 我原以为1.7.x应该是与1.6.x兼容的ABI(所以这不会发生)但我猜不是。叹息

Anaconda CE库中的numpy版本是1.7.0b2,我的系统numpy安装版本是1.5.1。在构建熊猫时,Setup.py链接到Anaconda发行版库中的numpy,但我的猜测是当测试运行/ pandas / init .py

时链接到我的系统版本

接下来,我重复了virtualenv之外的步骤,但是遇到了同样的错误。 最后,我决定在新的virtualenv中安装所有依赖项,而不是使用Anaconda发行版来构建pandas。通过这种方式,我可以看到像numpy这样的依赖项驻留在virtualenv python安装的lib目录中,当pandas。 init 运行import语句时,它会先于先行。这就是我所做的:

1)使用pip安装numpy,dateutil,pytz,cython,scipy,matplotlib和openpyxl

2)建立了c扩展

3)pandas在这里安装输出:http://pastebin.com/3CKf1f9i

4)pandas没有正确安装

(pandas)ems ~/.virtualenvs/pandas/localrepo/pandas> python
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
 cannot import name hashtable
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pandas/__init__.py", line 6, in <module>
from . import hashtable, tslib, lib
ImportError: cannot import name hashtable

我看了this question,但在我的情况下安装了cython,我正在尝试从源代码中成功构建,而不是像推荐的答案一样使用pip。

(pandas)ems ~/.virtualenvs/pandas/localrepo/pandas> which cython
/Users/EmilyChen/.virtualenvs/pandas/bin/cython

1 个答案:

答案 0 :(得分:31)

尝试从源代码目录导入pandas时,我收到了同样的错误(ImportError: cannot import name hashtable)。尝试从另一个目录启动python解释器并再次导入pandas。