我想从源代码构建熊猫而不是使用包管理器,因为我有兴趣做出贡献。我第一次尝试构建 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 在 virtualenv 中的播放效果不佳。您收到的错误是 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