Je viens de mettre à jour la dernière version stable de matplotlib
(1.5.1) et chaque fois que j'importe matplotlib, le message suivant s'affiche:
/usr/local/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
... qui s'arrête toujours pendant quelques secondes.
Est-ce le comportement attendu? Était-ce la même chose avant, mais juste sans le message imprimé?
Comme suggéré par Tom dans le commentaire ci-dessus, supprimer les fichiers:
fontList.cache
fontList.py3k.cache
tex.cache
résoudre le problème. Dans mon cas, les fichiers se trouvaient sous:
`~/.matplotlib`
ÉDITÉ
Il y a quelques jours, le message est à nouveau apparu, j'ai supprimé les fichiers dans les emplacements mentionnés ci-dessus sans aucun succès. J'ai trouvé que comme suggéré ici par T Mudau il y a un emplacement supplémentaire avec les fichiers de cache de texte est: ~/.cache/fontconfig
L’approche confirmée de Hugo fonctionne pour Ubuntu 14.04 LTS/matplotlib 1.5.1:
Sur OSX Yosemite (version 10.10.15), les éléments suivants ont fonctionné pour moi:
rm -rvf ~/.cache/fontconfig/*
rm -rvf ~/.matplotlib/*
J'ai exécuté le code python à l'aide de Sudo une seule fois, et cela a résolu l'avertissement. Maintenant, ça va plus vite. Courir sans Sudo ne donne aucun avertissement.
À votre santé
J'ai couru le code python w. Sudo et ça a guéri ... je suppose qu'il n'y avait pas la permission d'écrire cette table ... bonne chance!
Cela a fonctionné pour moi sur Ubuntu 16.04 LST avec Python 3.5.2 | Anaconda 4.2.0 (64 bits) . J'ai supprimé tous les fichiers dans ~/.cache/matplotlib/
.
Sudo rm -r fontList.py3k.cache tex.cache
Au début, je pensais que cela ne fonctionnerait pas, car j'ai reçu l'avertissement par la suite. Mais après que les fichiers de cache aient été reconstruits, l'avertissement a disparu. Alors, fermez votre fichier et rouvrez-le (il l'ouvre à nouveau), il ne contient aucun avertissement.
HI vous devez trouver ce fichier: font_manager.py dans mon cas: C:\Utilisateurs\gustavo\Anaconda3\Lib\site-packages\matplotlib\font_manager.py
et FIND def win32InstalledFonts (répertoire = Aucun, fontext = 'ttf') et remplacé par:
def win32InstalledFonts (répertoire = Aucun, fontext = 'ttf'): "" " Recherchez les polices dans le répertoire de polices spécifié ou utilisez les répertoires système Si aucune liste n'est fournie. Une liste des noms de polices TrueType Sont renvoyés par défaut, ou des polices AFM si fontext == 'afm' . "" "
from six.moves import winreg
if directory is None:
directory = win32FontDirectory()
fontext = get_fontext_synonyms(fontext)
key, items = None, {}
for fontdir in MSFontDirectories:
try:
local = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, fontdir)
except OSError:
continue
if not local:
return list_fonts(directory, fontext)
try:
for j in range(winreg.QueryInfoKey(local)[1]):
try:
key, direc, any = winreg.EnumValue(local, j)
if not is_string_like(direc):
continue
if not os.path.dirname(direc):
direc = os.path.join(directory, direc)
direc = direc.split('\0', 1)[0]
if os.path.splitext(direc)[1][1:] in fontext:
items[direc] = 1
except EnvironmentError:
continue
except WindowsError:
continue
except MemoryError:
continue
return list(six.iterkeys(items))
finally:
winreg.CloseKey(local)
return None