matplotlib在导入时需要时间

时间:2016-01-13 15:54:39

标签: python matplotlib

我刚刚升级到/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.') (1.5.1)的最新稳定版本,每次导入matplotlib时都收到此消息:

<c:forEach var="row" items="${EFTresults}">
<jsp:useBean id="row" scope="page" type="the.path.to.the.package" />
    <tr>
        <td><%= row.getSCHEDULE_NUMBER %></td>
        ...
    </tr>
</c:forEach>

...总是停顿几秒钟。

这是预期的行为吗?之前是否也一样,但是没有印刷的信息?

8 个答案:

答案 0 :(得分:115)

正如Tom在上面的评论中所建议的,删除文件:

fontList.cache
fontList.py3k.cache 
tex.cache 
解决问题。 在我的情况下,文件在:

`~/.matplotlib`

EDITED

几天前,该消息再次出现,我删除了上述位置的文件,但没有成功。我发现按照here的建议T Mudau,有一个带文本缓存文件的额外位置是:~/.cache/fontconfig

答案 1 :(得分:25)

确认Hugo的方法适用于Ubuntu 14.04 LTS / matplotlib 1.5.1:

  • 已删除〜/ .cache / matplotlib / fontList.cache
  • 运行代码,再次发出警告(假设:正在重建缓存)
  • 再次运行代码,不再警告(最后)

答案 2 :(得分:12)

在OSX Yosemite(版本10.10.15)上,以下内容对我有用:

  • 也从这个目录中删除缓存文件:〜/ .cache / fontconfig(根据tom的建议)
    rm -rvf ~/.cache/fontconfig/*
  • 还删除了〜/ .matplotlib中的.cache文件(根据Hugo的建议)
    rm -rvf ~/.matplotlib/*

答案 3 :(得分:8)

我使用sudo运行了一次python代码,它解决了我的警告。 现在它运行得更快。没有sudo运行根本不会发出警告。

干杯

答案 4 :(得分:2)

我运行了python代码w。 sudo,它治愈了......我的猜测是没有许可写那张桌子......祝你好运!

答案 5 :(得分:0)

你必须找到这个文件:font_manager.py在我的情况下:C:\ Users \ gustavo \ Anaconda3 \ Lib \ site-packages \ matplotlib \ font_manager.py

和FIND def win32InstalledFonts(directory = None,fontext =&#39; ttf&#39;)并替换为:

def win32InstalledFonts(directory = None,fontext =&#39; ttf&#39;):     &#34;&#34;&#34;     在指定的字体目录中搜索字体,或使用     系统目录,如果没有给出。 TrueType字体列表     默认情况下返回文件名,如果 fontext ==,则返回AFM字体     &#39; AFM&#39 ;.     &#34;&#34;&#34;

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

答案 6 :(得分:0)

这对我来说非常适合我在Ubuntu 16.04 LST Python 3.5.2 | Anaconda 4.2.0(64位)。我删除了~/.cache/matplotlib/中的所有文件。

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

起初我觉得它不会起作用,因为之后我收到了警告。但是在重建缓存文件之后,警告就消失了。因此,关闭您的文件,然后重新打开(再次打开),它没有警告。

答案 7 :(得分:-1)

这对我有用:

sudo apt-get install libfreetype6-dev libxft-dev