matplotlib içe aktarılırken zaman alıyor


103

matplotlib(1.5.1) ' in en son kararlı sürümüne yeni yükselttim ve matplotlib'i her içe aktardığımda şu mesajı alıyorum:

/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.')

... her zaman birkaç saniye durur.

Bu beklenen davranış mı? Daha önce de aynısı mıydı, ancak yazılı mesaj olmadan mı?


32
ilgili: github.com/matplotlib/matplotlib/pull/5640 . Buradaki öneri, içeriğini silip ~/.cache/matplotlibtekrar denemektir. Bu bir izin sorunu olabilir - Her seferinde bu önbelleği oluşturmamalı
tmdavison

Son yorumları okumamıştım. Teşekkürler!
Ricky Robinson

7
Bu benim için çalıştı. Python 2.7 ile Ubuntu 14.04.2'de ~ / .cache / matplotlib / içindeki tüm dosyaları sildim. İlk başta işe yaramadığını düşündüm çünkü daha sonra uyarıyı aldım. Ancak önbellek dosyaları yeniden oluşturulduktan sonra uyarı ortadan kalktı. :)
Nancy Poekert

Bir mod_wsgi + apache httpd + centos kombinasyonunda - tarayıcıdan bir istek gönderildiğinde, httpd sadece yazı tipi önbelleğinin oluşturulduğunu söylemesini bekler .... 6 dakikadan fazla bekler ve devam eder .... ve asla tamamlanmaz yazı tipi güncellemesi. Lütfen bunun nasıl çözüleceğini önerebilir misiniz? Teşekkürler
Vinodh

Yanıtlar:


116

Tom'un yukarıdaki yorumda önerdiği gibi, dosyaları silmek:

fontList.cache
fontList.py3k.cache 
tex.cache 

problemi çöz. Benim durumumda dosyalar:

`~/.matplotlib`

DÜZENLENDİ

Birkaç gün önce mesaj tekrar belirdi, yukarıda bahsettiğim lokasyonlardaki dosyaları başarılı olamadan sildim. Burada T Mudau tarafından önerildiği gibi , metin önbellek dosyalarında fazladan bir konum olduğunu buldum :~/.cache/fontconfig


6
OSX El Capitan kullanıyorum ve bu sorunu çözmüyor. Düşüncesi olan var mı?
mar tin

2
El Capitan'da ~ / .cache / fontList veya benzerlerini de kaldırmak zorunda kaldım.
peanut_butter

29
mpl.get_cachedir()önbellek konumu belgelerini
Lenna

2
OS X El Capitan kullanıyorum ve bu sorunu çözüyor.
no

6
Bu dosyaları sildikten sonra, matplotlib'i bir sonraki içe aktardığınızda uyarıyı bir kez daha almaya devam edeceğinizi unutmayın. Bundan sonra hazırsınız.
ohruunuruus

25

Onaylanan Hugo'nun yaklaşımı Ubuntu 14.04 LTS / matplotlib 1.5.1 için çalışıyor:

  • ~ / .cache / matplotlib / fontList.cache silindi
  • kod çalıştırıldı, yine uyarı verildi (varsayım: önbelleği doğru şekilde yeniden oluşturuyor)
  • kodu tekrar çalıştırdı, artık uyarı yok (sonunda)

12

OSX Yosemite'de (sürüm 10.10.15), aşağıdakiler benim için çalıştı:

  • önbellek dosyalarını da bu dizinden kaldırın: ~ / .cache / fontconfig (tom'un önerisine göre)
    rm -rvf ~/.cache/fontconfig/*
  • Ayrıca ~ / .matplotlib'deki .cache dosyalarını da kaldırdı (Hugo'nun önerisine göre)
    rm -rvf ~/.matplotlib/*

Benim için macOS X El Captain üzerinde çalıştı. Diğer kitaplıkların da daha hızlı yüklenmesini sağladığı izlenimini edindim.
SeF

macOS 10.12'de çalıştı. 2. yüklemede artık mesajı almayın.
Demis

9

Python kodunu sudo kullanarak sadece bir kez çalıştırdım ve bu uyarıyı benim için çözdü. Şimdi daha hızlı çalışıyor. Sudo olmadan koşmak hiçbir uyarı vermez.

Şerefe


Stack Overflow'a hoş geldiniz! Bu teorik olarak soruya cevap görülebilir fakat tercih edildiğini burada cevabın temel parçalarını kapsadığı ve başvuru için bağlantı sağlar.
Enamul Hassan

Mac OSX El Capitan'da Jupyter dizüstü bilgisayar çalıştırıyorum. sudo jupyter notebookSonra import matplotlib.pyplotbir defterde koştum ve sorunumu çözdü.
kungphil

Bununla aylardır mücadele ediyorum ve bu sorunu çözdü! OS 10.9.5 kullanıyorum.
Tactopoda

1
Kabul edilen cevaba bakarsanız, yaptığınız tek şeyin kullanıcıyı değiştirerek sorunu çözdüğünüzü ve kök ana dizinde ~ / .matplotlib olmadığı için problemin ortadan kalktığını göreceksiniz.
Rsh

@Rsh Hayır, root izinlerini kullanmayı söyleyen cevaplar, onu bir kez root olarak çalıştırmanın onu çalıştırdığını ve böylece daha sonra normal bir kullanıcı olarak çalıştırırsanız önbelleği tekrar oluşturmayacağını söylüyor. Neyse, bu benim için işe yaramadı.
sudo

3

Python kodunu w çalıştırdım. sudo ve bu onu iyileştirdi ... Tahminimce o masayı yazma izniniz yoktu ... iyi şanslar!


0

HI bu dosyayı bulmalısınız: benim durumumda font_manager.py: C: \ Users \ gustavo \ Anaconda3 \ Lib \ site-packages \ matplotlib \ font_manager.py

ve BUL def win32InstalledFonts (dizin = Yok, fontext = 'ttf') ve şu şekilde değiştirin:

def win32InstalledFonts (directory = None, fontext = 'ttf'): "" "Belirtilen yazı tipi dizinindeki yazı tiplerini arayın veya belirtilmemişse sistem dizinlerini kullanın. Varsayılan olarak TrueType yazı tipi dosya adlarının bir listesi veya eğer 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

0

Bu benim için Python 3.5.2 ile Ubuntu 16.04 LST üzerinde çalıştı | Anaconda 4.2.0 (64 bit) . İçindeki tüm dosyaları sildim ~/.cache/matplotlib/.

sudo rm -r fontList.py3k.cache tex.cache 

İlk başta işe yaramayacağını düşündüm çünkü daha sonra uyarıyı aldım. Ancak önbellek dosyaları yeniden oluşturulduktan sonra uyarı ortadan kalktı. Bu yüzden dosyanızı kapatın ve yeniden açın (tekrar açın), hiçbir uyarı vermez.


-1

Bu benim için çalıştı:

sudo apt-get install libfreetype6-dev libxft-dev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.