pandas ImportError:无法在Mac OS X上导入名称哈希表

时间:2014-11-13 21:10:02

标签: python pandas

我最近注意到我的机器上安装了旧版本的pandas(0.10)。

我先尝试了pip install -U并得到了错误。我pip卸载,擦除任何旧目录,再次安装pip仍然是同样的错误。我甚至尝试使用git构建,但无论我做什么,我都会遇到同样的错误:

In [8]: import pandas
cannot import name hashtable
cannot import name hashtable
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-8-d6ac987968b6> in <module>()
----> 1 import pandas

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/__init__.py in <module>()
      5 
      6 try:
----> 7     from . import hashtable, tslib, lib
      8 except Exception:  # pragma: no cover
      9     import sys

/Users/kcampbell/pandas/tslib.pyx in init pandas.tslib (pandas/tslib.c:77195)()

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/pandas/__init__.py in <module>()
      5 
      6 try:
----> 7     from . import hashtable, tslib, lib
      8 except Exception:  # pragma: no cover
      9     import sys

ImportError: cannot import name hashtable

我的numpy,pytz,python-dateutil都是最新的

In [1]: import numpy

In [2]: numpy.__version__
Out[2]: '1.9.1'

In [3]: import pytz

In [4]: pytz.__version__
Out[4]: '2014.9'

In [5]: import dateutil

In [6]: dateutil.__version__
Out[6]: '1.5'

从pip安装时,在我猜测构建过程中它会吐出一堆东西。例如,这会重复很多:

In file included from pandas/index.c:235:
pandas/src/numpy_helper.h:73:10: warning: static variable 'PyArray_API' is used in an inline function with external linkage [-Wstatic-in-inline]
  return PyArray_IsScalar(obj, Datetime);
         ^
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:49:35: note: expanded from
      macro 'PyArray_IsScalar'
        (PyObject_TypeCheck(obj, &Py##cls##ArrType_Type))
                                  ^
<scratch space>:84:1: note: expanded from here
PyDatetimeArrType_Type
^
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy/__multiarray_api.h:1381:50: note: expanded from
      macro 'PyDatetimeArrType_Type'
#define PyDatetimeArrType_Type (*(PyTypeObject *)PyArray_API[215])
                                                 ^
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/object.h:439:60: note: expanded from macro 'PyObject_TypeCheck'
    (Py_TYPE(ob) == (tp) || PyType_IsSubtype(Py_TYPE(ob), (tp)))
                                                           ^
pandas/src/numpy_helper.h:71:1: note: use 'static' to give inline function 'is_datetime64_object' internal linkage
PANDAS_INLINE int
^
static 
pandas/src/helper.h:6:27: note: expanded from macro 'PANDAS_INLINE'
    #define PANDAS_INLINE __inline__
                          ^
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy/__multiarray_api.h:812:15: note: 'PyArray_API'
      declared here
static void **PyArray_API=NULL;

我从不同的目录运行python和ipython来测试“无法从源目录运行”的想法。在这一点上,我没有尝试的东西。当我尝试从git安装时,我安装了Cython。 我以前做过一个anaconda安装,我摆脱了,所以我很确定我没有任何流浪的安装在某处?

我现在处于亏损状态。任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:3)

好的,问题是你的熊猫安装搞砸了。

最可能的原因是,当您执行pandas时,您位于名为pip install pandas的目录中,这导致一些构建步骤获取到本地目录的相对路径而不是发生构建的临时目录的路径。当然不应该发生,但是基于自定义Python和Cython代码的构建与Pandas一样复杂,并不是那么令人惊讶。如果你可以重现这个问题,我会在上游提交一个bug,但我猜这并不容易。

无论如何,无论出于何种原因,解决方案都是相同的:卸载它,然后确保您位于一个未命名为pandas的目录中,并且没有任何名为pandas的内容它,然后重新安装。

答案 1 :(得分:0)

我在使用基于c的模块在我的Mac上工作/编译时遇到了很多麻烦,直到有人指出我在MacPorts https://www.macports.org/ - 在我看来这是一个支持良好,最新的包裹递送系统很好地服务于python - 没有提供一些比较模糊的软件包,但是我还没有遇到过那些不受支持的主流软件包。

我刚检查过,cython是受支持软件包的一部分。

port search cython

...various flavours of cython found for differing versions of python...
...including...

py34-cython @0.21.1 (python, devel)
A language for writing C extension modules for Python.

所以,不是直接回答,我知道,但也许值得一试?