web-dev-qa-db-fra.com

python 2.7 functools_lru_cache n'importe pas bien qu'il soit installé

Lorsque j'essaie d'importer matplotlib, j'obtiens une erreur.

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

les backports eux-mêmes importent correctement. Quand j'essaye d'installer functools manuellement via

Sudo pip install backports.functools_lru_cache

Je reçois des informations que

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

Néanmoins quand j'essaie de

import backports.functools_lru_cache

Je reçois des informations que

ImportError: No module named functools_lru_cache

Informations système Ubuntu 16 Python 2.7.12 Pip 9.0.1

26
Matimath

Si quelqu'un a toujours ce problème et que la réinstallation de backports.functools_lru_cache ne fonctionne pas dans son cas, comme c'était le cas dans mon cas, l'installation d'une ancienne version de matplotlib fonctionnerait probablement. Par exemple:

pip install matplotlib==2.0.2

Un problème est survenu pour la version 2.2.0, je suis passé à la version 2.0.2 et cela fonctionne maintenant. Je n'ai pas vérifié d'autres versions.

31
Kamil Smolak

J'ai eu le même problème mais je l'ai corrigé.

Désinstaller en premier

pip uninstall backports.functools_lru_cache

puis réinstallez-le.

pip install backports.functools_lru_cache

Maintenant, je peux importer matplotlib. J'espère que cela t'aides.

18
user3732168

La commande pip était en fait le pip3 et "ImportError" se produisait lorsque j'utilisais python (2.7).

pip2 uninstall backports.functools_lru_cache

puis,

pip2 install backports.functools_lru_cache

résolu mon problème.

9
enobufs

Installez la flèche en utilisant:

pip install arrow==0.12.0 

résolu ce problème pour moi 

8
Aditya Jain

Vous devez vérifier quel est le chemin d'importation du package backports:

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

1. Le chemin d'importation est le chemin principal de python (le cas de la question de Matimath)

pip désinstaller backports.functools_lru_cache (cela le désinstallera de /usr/local/)
pip installer backports.functools_lru_cache

2. Le chemin d'importation est le répertoire utilisateur local (~/.local /, ou% APPDATA%\Python pour windows)

pip désinstaller backports.functools_lru_cache 
 pip install --user backports.functools_lru_cache

Utilisez la commande pip2 pour python2.

Cette incohérence est due au fait que le chemin d’importation du paquet backports a peut-être été modifié lors de l’installation d’un autre module/paquet (par exemple, à partir du module backports.configparser) - voir ici pour plus de détails: https: // bugs .python.org/issue31741

5
Charidimos

J'ai eu le même problème et ma solution était;

2
HilmiK

J'ai résolu mon problème en supprimant les paquets excessifs matplotlib. J'ai découvert que lors de l'importation de matplotlib, il tentait de import backports.functools_lru_cache et jetait la Importerror.

J'ai réalisé que j'avais plusieurs paquets matplotlib dans de nombreux endroits:

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

J'ai enlevé le site-packages un. J'ai laissé les paquets dist un intacts.

Ensuite, j'ai exécuté les commandes suivantes en python:

matplotlib.get_configdir()
matplotlib.get_cachedir()

et j'ai supprimé les paquetages matplotlib dans les chemins de sortie de ces commandes. 

Ensuite, j'ai enlevé matplotlib dans mon environnement virtuel:

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

Enfin, j'ai supprimé celui du dossier .local:

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

Maintenant importer Matplotlib fonctionne bien. Alors quand je cours en python:

matplotlib.__file__

il revient

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

Maintenant, il ne jette plus d'erreur quand import backports.functools_lru_cache

2
redsphinx

J'ai eu le même problème, la réinstallation de backports.functools_lru_cache a résolu le problème.

1
Ragesh Moorkoth

Vous utilisez python 2. essayez d'utiliser pip2 à la place:

  • sudo apt-get autoremove python-matplotlib 
  • Sudo apt-get install python-matplotlib
  • Sudo apt-get install python-matplotlib
0
darrey

Également rencontrer ce problème sur Ubuntu 16 . Désinstaller et réinstaller ne fonctionne pas pour moi.

Ma solution est installer à partir d'apt.

pip uninstall matplotlib
Sudo apt-get autoremove python-matplotlib
Sudo apt-get install python-matplotlib
0
Javan

cela a fonctionné pour moi

from backports.functools_lru_cache import lru_cache
0
Aze