python 2.7 functools_lru_cache虽然安装但不导入

时间:2017-11-08 12:12:25

标签: python matplotlib backport

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

    public class MainActivity extends AppCompatActivity {
    static List<long[]> myList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myList.add(loadStuff());
            }
        });
    }


    static long[] loadStuff() {
        return new long[2048];
    }
}

backports本身导入正确。当我尝试通过

手动安装functools时
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

我得到的信息

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

系统信息 Ubuntu 16 Python 2.7.12 Pip 9.0.1

14 个答案:

答案 0 :(得分:32)

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

pip install matplotlib==2.0.2

版本2.2.0出现问题,我切换到2.0.2,现在正在运行。我没有查看其他版本。

答案 1 :(得分:18)

我有同样的问题,但我修好了。

首先卸载

pip uninstall backports.functools_lru_cache

然后重新安装。

pip install backports.functools_lru_cache

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

答案 2 :(得分:10)

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

pip2 uninstall backports.functools_lru_cache

然后,

pip2 install backports.functools_lru_cache

解决了我的问题。

答案 3 :(得分:9)

使用以下命令安装箭头

pip install arrow==0.12.0 

为我修复了此问题

答案 4 :(得分:5)

您必须检查什么是 backports 软件包的导入路径

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

1。导入路径是主要的python路径(以Matimath的问题为例)

pip uninstall backports.functools_lru_cache   (this will uninstall it from /usr/local/)
pip install backports.functools_lru_cache

2。导入路径是本地usr dir (对于Windows,是〜/ .local /或%APPDATA%\ Python)  

pip uninstall backports.functools_lru_cache 
pip install --user backports.functools_lru_cache

对python2使用 pip2 命令。

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

答案 5 :(得分:2)

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

答案 6 :(得分: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

时它不再抛出错误了

答案 7 :(得分:1)

我遇到了同样的问题,重新安装backports.functools_lru_cache解决了该问题

答案 8 :(得分:1)

您正在使用pyhton 2.尝试使用PIP2代替:

  • pip2卸载matplotlib
  • sudo apt-get自动删除python-matplotlib
  • sudo apt-get install python-matplotlib

答案 9 :(得分:0)

这对我有用

from backports.functools_lru_cache import lru_cache

答案 10 :(得分:0)

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

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

def something(a,b):
    print(a)
    print(b)
something(a,b)

答案 11 :(得分:0)

Aditya Jain's answer开始,

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

这将避免仅安装arrow来降级functools_lru_cache

答案 12 :(得分:0)

这对我有用。 Ubuntu 18.04。

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

答案 13 :(得分:0)

如果您在Ubuntu 18.x(可能还有其他版本)上遇到此问题:这是由this Ubuntu bug引起的。问题出在作为python-configparser依赖项安装的Ubuntu软件包python-pip中。它包含 __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模块周围也有类似问题。