解决cookiecutter在ubuntu上出现的问题“No module named functools_lru_cache”

解决cookiecutter在ubuntu上遇到的问题“No module named functools_lru_cache”

前言

我们都知道cookiecutter是一个非常方便的基于Python的项目模板工具,它就相当于一些IDE工具的创建项目工程的向导工具,创建的工程具有统一的结构。

背景

同事之前写了一个golang的项目模板,今天在使用cookiecutter创建新工程时,出现了问题Unable to load extension: No module named functools_lru_cache。询问身边的同事有没有碰到这样的问题,得到的答复是没有。他们用的系统都是Mac OS。而我用的是Ubuntu。我的系统版本是Ubuntu 18.04.4 LTS

解决过程

看提示像是在ubuntu系统上cookiecutter缺少了依赖functools_lru_cache,很可能是没有安装它。于是就执行下面的命令去安装functools_lru_cache

$ pip install backports.functools_lru_cache

然后再去执行:

$ cookiecutter git@XXX/go-swagger-template.git

几秒钟后,问题依然存在:

Unable to load extension: No module named functools_lru_cache

然后就开始拿出了面向google编程的本领,开始了一顿搜索。搜索结果就是很多人在Ubuntu上都遇到过这个问题。在github上一个开源项目里,就有人提了这样一个issue[^1].
在这个issue[^1]里,有人提出卸载functools_lru_cache后再重新安装。并有一些人尝试之后确实解决了这个问题。

$ pip uninstall backports.functools_lru_cache
$ pip install backports.functools_lru_cache

我也安装这个方式尝试了两次,但都不行。于是继续往下看这个issue,看是否有别的解决方案。还真有!harprit讲,看起来是functools_lru_cache相关的文件丢失造成的。他说python matplotlib在ubuntu上也有这个问题。按照他的建议使用下面的命令安装python-matplotlib

$ sudo apt-get install python-matplotlib

安装完后,再尝试使用cookiecutter来创建新项目工程,问题消失了,工程创建成功。非常感谢google。

在前面的issue[^1]讨论中,有人是用Fedora系统,他的解决方案是执行下面的命令:

dnf install python2-backports-functools_lru_cache

结束语

写此博文存粹是帮助自己把这个问题的解决方法记录下来,以备后续再遇到,减少自己重复的工作。也给将来遇到这个问题的小伙伴提供一个方案,没准能帮助到你们,那将是我今天写这篇博客的荣幸。

参考

  • [^1]https://github.com/awslabs/aws-sam-cli/issues/474
  • https://askubuntu.com/questions/1046554/python-matplotlib-importerror-no-module-named-functools-lru-cache?answertab=oldest#tab-top
  • https://stackoverflow.com/questions/47179433/python-2-7-functools-lru-cache-does-not-import-although-installed/47317710#47317710
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章