问题表现
执行pip install backports.functools_lru_cache成功后,使用 from backports.functools_lru_cache import lru_cache 导包仍报错
定位过程
看网上有关该问题的介绍,多数是安装matplotlib时遇见的,原因是matplotlib版本不对,降低版本即可,而我这里是安装arrow时遇见的问题,同时我们的包版本在其他集群有应用过,是没有冲突的,所以不考虑修改版本的问题。
那么只有解决包本身为什么没有导入的问题。使用 pip show backports.functools_lru_cache
得到安装路径为Location: /usr/lib/python2.7/site-packages
,再到python中执行
import sys
sys.path
观察其中是否包含安装路径。我这边是存在该安装路径的,问题不在此处。
那么继续定位,根据包名 backports.functools_lru_cache 得知 /usr/lib/python2.7/site-packages
安装路径下应该是存在backports文件夹并且其中存在functools_lru_cache文件/文件夹的。ll 查看 /usr/lib/python2.7/site-packages/backports目录如图
并没有functools_lru_cache 文件,因此定位出问题是安装时functools_lru_cache无法写入到该目录中,检查文件夹权限是没有问题的,网上也没有搜到相关信息,尝试将该文件夹清空(注意先备份文件),再次执行pip install backports.functools_lru_cache
安装后查看目录
再次进入python尝试导包,导入成功,因此定位出问题原因是安装程序无法写入指定目录,具体原因暂不清楚。
解决方案
将原目录下文件备份后删除,再次进行安装,安装成功后将原目录下文件恢复。