32

当我尝试导入 matplotlib 时出现错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/__init__.py", line 128, in <module>
  from matplotlib.rcsetup import defaultParams, validate_backend, cycler
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/rcsetup.py", line 29, in <module>
    from matplotlib.fontconfig_pattern import parse_fontconfig_pattern
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/fontconfig_pattern.py", line 32, in <module>
    from backports.functools_lru_cache import lru_cache
ImportError: No module named functools_lru_cache

backports 本身可以正确导入。当我尝试通过手动安装 functools

sudo pip install backports.functools_lru_cache

我得到的信息

Requirement already satisfied: backports.functools_lru_cache in /usr/local/lib/python2.7/dist-packages

尽管如此,当我尝试

import backports.functools_lru_cache

我得到的信息

ImportError: No module named functools_lru_cache

系统信息 Ubuntu 16 Python 2.7.12 Pip 9.0.1

4

14 回答 14

39

如果有人仍然有这个问题并且重新安装 backports.functools_lru_cache 在他的情况下不起作用,就像在我的情况下一样,那么安装旧版本的 matplotlib 可能会起作用。例如:

pip install matplotlib==2.0.2

版本 2.2.0 出现问题,我切换到 2.0.2,它现在可以工作了。我没有检查其他版本。

于 2018-03-17T12:23:18.443 回答
29

我有同样的问题,但我解决了。

先卸载

pip uninstall backports.functools_lru_cache

然后重新安装它。

pip install backports.functools_lru_cache

现在我可以导入 matplotlib。希望这可以帮助。

于 2017-11-10T03:09:49.133 回答
19

使用安装箭头:

pip install arrow==0.12.0 

为我解决了这个问题

于 2018-08-24T14:30:57.553 回答
14

pip 命令实际上是 pip3,当我使用 python (2.7) 时发生了“ImportError”。

pip2 uninstall backports.functools_lru_cache

然后,

pip2 install backports.functools_lru_cache

解决了我的问题。

于 2017-11-15T21:38:31.900 回答
9

您必须检查什么是backports导入路径:

import backports
print('Backports Path: {0}'.format(backports.__path__))

1.导入路径为主python路径(Matimath的问题为例)

pip uninstall backports.functools_lru_cache(这将从 /usr/local/ 卸载它)
pip install backports.functools_lru_cache

2. 导入路径是本地 usr 目录(~/.local/, or %APPDATA%\Python for windows)

pip 卸载 backports.functools_lru_cache
pip install --user backports.functools_lru_cache

对 python2使用pip2命令。

这种不一致的原因是 backports 包的导入路径可能在另一个模块/包安装期间已更改(例如,来自 backports.configparser 模块) - 请参阅此处了解更多详细信息: https ://bugs.python.org/issue31741

于 2018-06-30T18:02:39.140 回答
6

根据Aditya Jain 的回答

[python -m] pip uninstall backports.functools_lru_cache
[python -m] pip install backports.functools_lru_cache==1.2.1

这将避免arrow仅仅为了降级而安装functools_lru_cache

于 2019-12-02T03:38:47.283 回答
3

我有同样的问题,我的解决方案是;

于 2017-12-05T14:48:13.187 回答
2

我通过删除过多的 matplotlib 包解决了我的问题。我发现在导入 matplotlib 时它正在尝试import backports.functools_lru_cache并且在那里抛出Importerror.

我意识到我在很多地方都有不同的 matplotlib 包:

/usr/lib/python2.7/dist-packages/matplotlib/
/usr/lib/python2.7/site-packages/matplotlib/

我删除了站点包之一。我留下了一个完整的 dist-packages。

然后我在python中运行了以下命令:

matplotlib.get_configdir()
matplotlib.get_cachedir()

我删除了这些命令的输出路径中的 matplotlib 包。

然后我在我的虚拟环境中删除了 matplotlib:

mv /home/username/virtualenvironment/lib/python2.7/matplotlib* /tmp

最后我删除了 .local 文件夹中的那个:

mv /home/username/.local/lib/python2.7/matplotlib* /tmp

现在导入 matplotlib 工作正常。所以当我在 python 中运行时:

matplotlib.__file__

它返回

'/usr/lib/python2.7/dist-packages/matplotlib/__init__.pyc'

现在它不再抛出错误import backports.functools_lru_cache

于 2018-01-10T12:20:33.403 回答
2

您正在使用 pyhton 2。尝试使用 pip2 代替:

  • pip2 卸载 matplotlib
  • sudo apt-get autoremove python-matplotlib
  • sudo apt-get install python-matplotlib
于 2019-02-02T09:23:17.377 回答
2

如果您在 Ubuntu 18.x(可能还有其他版本)上遇到此问题:它是由这个 Ubuntu 错误引起的。问题出在python-configparser作为python-pip. 它包含 __init__文件

/usr/lib/python2.7/dist-packages/backports/__init__.py

因此,安装到的 pip 模块会/usr/local/lib/python2.7/dist-packages/backports忽略。一旦此错误尚未修复,修复此问题的最简单方法是删除此包:

sudo apt remove python-configparser

它不会对您backports通过 pip 安装的任何模块造成任何损害(因为它们位于另一个文件夹中),这比版本降级安全得多。

另请参阅有关模块的类似问题的这个 pip 问题。backports

于 2020-05-23T19:32:38.690 回答
1

在 Ubuntu 16 上也遇到这个问题。卸载和重新安装对我不起作用。

我的解决方案是从 apt 重新安装。

pip uninstall matplotlib
sudo apt-get autoremove python-matplotlib
sudo apt-get install python-matplotlib
于 2018-10-21T16:26:50.300 回答
1

我有同样的问题,重新安装 backports.functools_lru_cache 解决了这个问题

于 2018-07-12T09:33:46.910 回答
0

这对我有用

from backports.functools_lru_cache import lru_cache
于 2018-06-24T06:18:34.010 回答
0

这对我有用。Ubuntu 18.04。

sudo pip2 uninstall backports.functools-lru-cache
sudo apt install python-backports.functools-lru-cache
于 2020-03-13T06:09:08.173 回答