【问题标题】:python 2.7 functools_lru_cache does not import although installedpython 2.7 functools_lru_cache 虽然安装但不导入
【发布时间】:2017-11-08 12:12:25
【问题描述】:

当我尝试导入 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 点 9.0.1

【问题讨论】:

    标签: python matplotlib backport


    【解决方案1】:

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

    pip install matplotlib==2.0.2
    

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

    【讨论】:

    • 我在将 Ubuntu 更新到 18.04 后遇到了同样的问题。这个答案为我解决了。注意:我之前还必须通过 pip 卸载 matplotlib:pip uninstall matplotlib
    • 不应该有任何理由降级 matplotlib。如果有人认为 matplotlib 存在问题,最好通知开发人员。但是,从这里的其他答案来看,这个问题应该可以通过正确设置安装 matplotlib 的环境来解决。
    • 这就像一个魅力。它还解决了'cbook'(stackoverflow.com/questions/44623376/…)的神秘导入错误。
    • 这成功了!多谢!我试图找出一个多小时的问题。重新安装我的 python,弄乱 lib/site-packages 文件夹中的文件。
    【解决方案2】:

    我遇到了同样的问题,但我已经解决了。

    先卸载

    pip uninstall backports.functools_lru_cache
    

    然后重新安装。

    pip install backports.functools_lru_cache
    

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

    【讨论】:

    • 我遇到了同样的问题。 backports.functools_lru_cache 的卸载/安装没有帮助。我也在使用 Ubuntu 16.04、Python 27、pip 9.0.1)
    • 我使用的是 Ubuntu 14.04、Python 2.7.14 和 pip 9.0.1。它对我有用。
    • @enobufs 你能解决这个问题吗,我也面临同样的问题。
    • @saharudra 是的,就我的情况而言。请参阅下面的帖子。
    • @enobufs 我确实尝试过,但没有用。我卸载了matplotlib,甚至卸载了python2.7,从头开始但是没有用。
    【解决方案3】:

    安装箭头使用:

    pip install arrow==0.12.0 
    

    帮我解决了这个问题

    【讨论】:

    • 有趣...这对我有用。它导致卸载backports.functools-lru-cache-1.5,然后安装backports.functools-lru-cache-1.2.1。对我来说不明显的是为什么这可以解决任何问题。在交互式会话中,导入在 1.5 版中运行良好。
    • 哇,魔法!这对我有用,使用 Python 2.7.16 并导致降级到 backports.functools_lru_cache==1.2.1
    【解决方案4】:

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

    pip2 uninstall backports.functools_lru_cache
    

    那么,

    pip2 install backports.functools_lru_cache
    

    解决了我的问题。

    【讨论】:

    • 这对我有用,也许 pip 是 pip3 是一个新事物
    【解决方案5】:

    你必须检查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/,或 %APPDATA%\Python for windows)

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

    对 python2 使用 pip2 命令。

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

    【讨论】:

    • ''--user'' 正是 virtualenv 中所需要的
    【解决方案6】:

    来自Aditya Jain's answer

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

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

    【讨论】:

      【解决方案7】:

      我遇到了同样的问题,我的解决方案是;

      【讨论】:

        【解决方案8】:

        我通过删除过多的 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时不再抛出错误

        【讨论】:

          【解决方案9】:

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

          • pip2 卸载 matplotlib
          • sudo apt-get autoremove python-matplotlib
          • sudo apt-get install python-matplotlib

          【讨论】:

            【解决方案10】:

            如果您在 Ubuntu 18.x(可能还有其他版本)上遇到此问题:它是由 this Ubuntu bug 引起的。问题出在 Ubuntu 软件包 python-configparser 中,它是作为 python-pip 的依赖项安装的。它包含 empty __init__ 文件

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

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

            sudo apt remove python-configparser
            

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

            另请参阅this pip issue,在backports 模块中遇到类似问题。

            【讨论】:

            • 这解决了我的树莓派上的同样问题。
            • 它也解决了我在 Raspberry Pi 上的问题,而我正在尝试使用 CSS 选择器玩 BeautifulSoup4。
            【解决方案11】:

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

            【讨论】:

            • 请尝试添加解释。
            【解决方案12】:

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

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

            pip uninstall matplotlib
            sudo apt-get autoremove python-matplotlib
            sudo apt-get install python-matplotlib
            

            【讨论】:

              【解决方案13】:

              这对我有用

              from backports.functools_lru_cache import lru_cache
              

              【讨论】:

              • 这在 Ubuntu 18 上出现以下错误:'''ImportError: No module named functools_lru_cache'''
              【解决方案14】:

              这对我有用。 Ubuntu 18.04。

              sudo pip2 uninstall backports.functools-lru-cache
              sudo apt install python-backports.functools-lru-cache
              

              【讨论】:

                猜你喜欢
                • 2012-03-29
                • 2015-12-18
                • 2019-10-17
                • 1970-01-01
                • 2016-05-11
                • 1970-01-01
                • 2022-01-22
                • 2021-04-06
                • 2015-05-09
                相关资源
                最近更新 更多