当我尝试导入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
答案 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)
我遇到了同样的问题,我的解决方案是;
从https://pypi.python.org/pypi/backports.functools_lru_cache/1.3
pip install
答案 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代替:
答案 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)
[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
模块周围也有类似问题。