为什么尝试导入 Pandas Python 模块时会出现 ImportError?

为什么尝试导入 Pandas Python 模块时会出现 ImportError?

我安装了适用于 Python 2.7 的 Pandas 模块使用apt-get。但是,当我尝试导入模块时,它会引发ImportError

 import pandas as pd
 File "/usr/lib/pymodules/python2.7/pandas/__init__.py", line 15, in <module>
    raise ImportError('ImportError: C extensions not built: if you installed already verify that you are not importing from the source directory')

来电/usr/lib/pymodules/python2.7/pandas/__init__.py如下:

import pandas.lib as lib
except Exception:  # pragma: no cover
    import sys
    e = sys.exc_info()[1] # Py25 and Py3 current exception syntax conflict
    if 'No module named' in str(e):
        raise ImportError('C extensions not built: if you installed already '
                          'verify that you are not importing from the source '
                          'directory')
    else:
        raise

为什么我会遇到ImportError这种情况?如何解决?

以下是我在交互式 Python shell 中尝试导入 Pandas 依赖项时得到的结果:

>>> import numpy as np
>>> import dateutil
>>> import pytz
>>> import numexpr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named numexpr
>>> import bottleneck
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named bottleneck

答案1

以下是Pandas 的依赖项

  • NumPy
  • python-dateutil
  • 派茨

Pandas 项目列出了以下两个强烈推荐的依赖项

  • 数字表达式
  • 瓶颈

看起来apt-get只安装了必需的依赖项,而不是强烈推荐的依赖项;因此,ImportError当您尝试导入numexpr和时,您会得到一个bottleneck。安装这些模块很可能可以解决问题。

由于从 Python Traceback 可以明显看出您正在运行 Python 2.7,请按照以下建议安装这两个模块:

  • numexpr存在于 Ubuntu 的存储库中。因此,通过运行以下命令安装它:

    sudo apt-get install python-numexpr
    
  • bottleneck在 Ubuntu 的存储库中不存在。因此,使用 安装它pip。我们还需要安装build-essentials包才能构建bottleneck

    sudo apt-get install python-pip build-essentials
    sudo pip install bottleneck
    

答案2

此外,如果通过安装了包easy_install,而现在其他依赖包已经通过 PIP 安装了,则可能会出现此类问题。

easy_install若要修复此问题,请删除通过安装的任何/所有模块rm -rf /usr/local/lib/python2.7/site-packages/"module_name"

然后运行pip install "module_name"

相关内容