我安装了适用于 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"
。