13

我想从源代码构建熊猫而不是使用包管理器,因为我有兴趣做出贡献。我第一次尝试构建 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) 在主分支上运行鼻子测试

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


在 0.001 秒内运行 1 次测试

失败(错误=1)

PyData 邮件列表中有人说:

看起来您在机器上的其他地方安装了 NumPy,而 AnacondaCE 在 vi​​rtualenv 中的播放效果不佳。您收到的错误是 Cython 错误消息,当它构建的 NumPy 版本与您系统上安装的版本不匹配时发生 - 我曾认为 1.7.x 应该与 1.6.x 兼容 ABI(所以这不会发生)但我想不会。叹

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

接下来,我在 virtualenv 之外重复了这些步骤,但得到了同样的错误。最后,我决定将所有依赖项安装在一个新的 virtualenv 中,而不是使用 Anaconda 发行版来构建 pandas。这样,我可以看到像 numpy 这样的依赖项驻留在 virtualenv python 安装的 lib 目录中,这在 pandas 中是先例。init运行导入语句。这就是我所做的:

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

2) 就地构建 c 扩展

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

4)熊猫没有正确安装

(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

我看了一下这个问题,但在我的情况下安装了 cython,我正在尝试从源代码成功构建,而不是像推荐的答案那样使用 pip..

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

1 回答 1

31

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

于 2013-01-28T18:12:24.997 回答