आयात होने पर समय ले रहा है


103

मैं सिर्फ matplotlib(1.5.1) के नवीनतम स्थिर रिलीज में उन्नत हुआ और हर बार जब मैं इस संदेश को प्राप्त करता हूं तो मैं 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.')

... जो हमेशा कुछ सेकंड के लिए रुकता है।

क्या यह अपेक्षित व्यवहार है? क्या पहले भी ऐसा ही था, लेकिन सिर्फ छपे संदेश के बिना?


32
प्रासंगिक: github.com/matplotlib/matplotlib/pull/5640 । वहां का सुझाव है कि सामग्री हटाएं ~/.cache/matplotlibऔर फिर से प्रयास करें। यह एक अनुमति मुद्दा हो सकता है - यह उस कैश को हर बार नहीं बनाना चाहिए
tmdavison

मैंने नवीनतम टिप्पणियों को नहीं पढ़ा था। धन्यवाद!
रिकी रॉबिन्सन

7
इसने मेरे लिए काम किया। पाइथन 2.7 के साथ उबंटू 14.04.2 पर मैंने ~ / .cache / matplotlib / में सभी फ़ाइलों को हटा दिया। पहले मुझे लगा कि यह काम नहीं करता क्योंकि मुझे बाद में चेतावनी मिली। लेकिन कैश फ़ाइलों के पुनर्निर्माण के बाद चेतावनी चली गई। :)
नैन्सी पॉकेट

Mod_wsgi + apache httpd + centos कॉम्बिनेशन में - जब ब्राउज़र से रिक्वेस्ट भेजी जाती है तो httpd बस इंतजार करता है कि फॉन्ट कैश बनाया जा रहा है .... यह 6 मिनट से ज्यादा इंतजार करता है और आगे बढ़ता है .... और कभी पूरा नहीं होता है। फ़ॉन्ट अद्यतन। क्या आप इसका समाधान करने का सुझाव दे सकते हैं? धन्यवाद
Vinodh

जवाबों:


116

जैसा कि टॉम ने ऊपर टिप्पणी में सुझाया है, फाइलों को हटाना:

fontList.cache
fontList.py3k.cache 
tex.cache 

समस्या का समाधान। मेरे मामले में फाइलें निम्न थीं:

`~/.matplotlib`

संपादित

कुछ दिन पहले संदेश फिर से दिखाई दिया, मैंने बिना किसी सफलता के ऊपर बताए गए स्थानों में फ़ाइलों को हटा दिया। मैंने पाया के रूप में सुझाव दिया है कि यहाँ से टी Mudau वहाँ पाठ कैश फ़ाइलों के साथ एक अतिरिक्त स्थान है:~/.cache/fontconfig


6
मैं OSX El Capitan पर हूं और इससे समस्या हल नहीं होती है। कोई विचार?
टिन

2
एल कैपिटान पर मुझे भी ~ / .cache / fontList या समान को हटाना पड़ा।
मूंगफली_बटरेट

29
mpl.get_cachedir()कैश स्थान डॉक्स
लेनना

2
मैं OS X El Capitan पर हूं और इस मुद्दे को हल करता है।
nos

6
ध्यान दें कि इन फ़ाइलों को हटाने के बाद भी आपको चेतावनी एक बार मिलेगी - अगली बार जब आप matplotlib को आयात करेंगे। उसके बाद आप सेट हो गए।
ohruunuruus

25

पुष्टि की गई ह्यूगो का दृष्टिकोण उबंटू 14.04 LTS / matplotlib 1.5.1 के लिए काम करता है:

  • हटाए गए ~ /। cache / matplotlib / fontList.cache
  • कोड चलाया गया, फिर से चेतावनी जारी की गई (धारणा: कैश को सही तरीके से पुनर्निर्माण कर रहा है)
  • कोड फिर से चलाया, कोई और अधिक चेतावनी (अंत में)

12

OSX Yosemite (संस्करण 10.10.15) पर, मेरे लिए निम्न कार्य किया गया:

  • कैश फ़ाइलों को इस निर्देशिका से भी निकालें: ~ / .cache / fontconfig (टॉम के सुझाव के अनुसार)
    rm -rvf ~/.cache/fontconfig/*
  • भी .cache फ़ाइलों को हटा दिया ~ (.matplotlib में (ह्यूगो के सुझाव के अनुसार)
    rm -rvf ~/.matplotlib/*

मेरे लिए macOS X El Captain पर काम किया। मुझे लगता है कि इसने अन्य पुस्तकालयों को भी तेजी से लोड किया है।
सेफ़

macOS 10.12 पर काम किया। 2 लोड पर, अब संदेश नहीं मिलता है।
डेमिस

9

मैंने सिर्फ एक बार सुडो का उपयोग करते हुए अजगर कोड चलाया, और इसने मेरे लिए चेतावनी को हल कर दिया। अब यह तेजी से चलता है। सुडो के बिना दौड़ना कोई चेतावनी नहीं देता है।

चियर्स


ढेर अतिप्रवाह में आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
इनामुल हसन

मैं Mac OSX El Capitan पर Jupyter नोटबुक चला रहा हूं। मैं sudo jupyter notebookफिर import matplotlib.pyplotएक नोटबुक में भागा और इसने मेरी समस्या हल कर दी।
कुंगफिल

मैं महीनों से इससे जूझ रहा हूँ और इसने इसे हल कर दिया है! मैं OS 10.9.5 पर हूं।
टैक्टोपोडा

1
ठीक है, यदि आप स्वीकृत उत्तर पर एक नज़र डालते हैं, तो आप देखेंगे कि आपने जो किया है वह यह है कि आपने उपयोगकर्ता को बदलकर समस्या का हल कर दिया है, और चूंकि रूट होम निर्देशिका समस्या में कोई ~ / .matplotlib नहीं है।
Rsh

@ नहीं, रूट अनुमतियों का उपयोग करने के लिए कह रहे उत्तर कहते हैं कि इसे रूट के रूप में एक बार चलाने से यह ऐसा हो जाता है, तो यह फिर से कैश का निर्माण नहीं करता है यदि आप एक नियमित उपयोगकर्ता के रूप में चलाते हैं। वैसे भी, यह मेरे लिए काम नहीं किया।
sudo

3

मैंने अजगर कोड w चलाया। सुडोल और यह ठीक हो गया ... मेरा अनुमान था कि उस तालिका को लिखने की अनुमति नहीं थी ... सौभाग्य!


0

HI आपको यह फ़ाइल मिलनी चाहिए: font_manager.py मेरे मामले में: C: \ Users \ gustavo \ Anaconda3 \ Lib \ साइट-संकुल \ matplotlib \ font_manager.py

और FIND को win32InstalledFonts (निर्देशिका = कोई नहीं, fontext = 'ttf') और प्रतिस्थापित करें:

def win32InstalledFonts (निर्देशिका = कोई नहीं, fontext = 'ttf'): "" "निर्दिष्ट फ़ॉन्ट निर्देशिका में फ़ॉन्ट खोजें, या यदि कोई नहीं दिया गया है तो सिस्टम निर्देशिका का उपयोग करें। ट्रू टाइप फ़ॉन्ट फ़ाइलनामों की सूची डिफ़ॉल्ट रूप से, या AFM फ़ॉन्ट द्वारा वापस कर दी गई है यदि। 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

इसने मेरे लिए Ubuntu 16.04 LST पर पायथन 3.5.2 के साथ काम किया एनाकोंडा 4.2.0 (64-बिट) । मैंने सभी फ़ाइलों को हटा दिया है ~/.cache/matplotlib/

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

पहले मुझे लगा कि यह काम नहीं करेगा, क्योंकि मुझे चेतावनी बाद में मिली। लेकिन कैश फ़ाइलों के पुनर्निर्माण के बाद चेतावनी चली गई। इसलिए, अपनी फ़ाइल को बंद करें, और फिर से खोलें (फिर से खोलें), इसकी कोई चेतावनी नहीं है।


-1

यह मेरे लिए काम किया:

sudo apt-get install libfreetype6-dev libxft-dev
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.