我想从源代码构建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
答案 0 :(得分:31)
尝试从源代码目录导入pandas时,我收到了同样的错误(ImportError: cannot import name hashtable
)。尝试从另一个目录启动python解释器并再次导入pandas。