2012-03-22 17 views
8

के लिए एक लिखने योग्य निर्देशिका में सेट करने पर विचार करें, मैं एक django प्रोजेक्ट सेट अप करने के लिए लिनक्स सर्वर का उपयोग कर रहा हूं। मुझे यह त्रुटि मिली: "/var/www/.matplotlib बनाने में विफल; MPLCONFIGDIR को matplotlib कॉन्फ़िगरेशन डेटा के लिए एक लिखने योग्य निर्देशिका में सेट करने पर विचार करें"Matplotlib MPLCONFIGDIR सेट करना: MPLCONFIGDIR को matplotlib कॉन्फ़िगरेशन डेटा

तब मुझे $ MPLCONFIGDIR खाली मिला। इसलिए मैंने इसे इस तरह सेट किया:

[email protected]:~$ export MPLCONFIGDIR=~/website/graph 
[email protected]:~$ echo $MPLCONFIGDIR 
/home/lab/website/graph 

यह पथ निर्देशिका है जहां मैं Matplotlib द्वारा बनाई गई छवियों को संग्रहीत करना चाहता हूं।

>>> import matplotlib 
>>> import os 
>>> os.environ.get('MPLCONFIGDIR') 
'/home/lab/website/graph' 

लेकिन, Django परियोजना जो mod_wsgi साथ अपाचे में तैनात है, उपर्युक्त त्रुटि अभी भी बाहर निकालता है: तो मैं अजगर आदेश पंक्ति में इस सेटिंग को सुनिश्चित किया। मैंने नीचे दी गई पंक्तियां जोड़ दी:

import os 
os.environ['MPLCONFIGDIR'] = "/home/lab/website/graph" 
print(os.environ.get('MPLCONFIGDIR')) 

यह "कोई नहीं" प्रिंट करता है!

क्या कोई मेरी मदद कर सकता है?

धन्यवाद।

+0

आह, अगर केवल मुझे पता था कि मुझे 'mapplotlib' के साथ एक ही समस्या होने पर क्या खोजना है। मैंने कोड को उस बिंदु पर बैकट्रैक किया जहां मुझे 'configdir = os.en वातावरण.get (' MPLCONFIGDIR ') मिला। मुझे लगता है कि अपवाद स्टैकट्रैक ने मुझे इसके बारे में कभी नहीं बताया। –

उत्तर

18

matplotlib आयात करने से पहले MPLCONFIGDIR कोड में सेट करें। सुनिश्चित करें कि निर्देशिका में अनुमतियां हैं जैसे कि इसे ऐप द्वारा लिखा जा सकता है।

import os 
os.environ['MPLCONFIGDIR'] = "/home/lab/website/graph" 
import matplotlib 

वैकल्पिक रूप से, आप इसे एक tempfile पर सेट कर सकते हैं।

import os 

try: 
    import matplotlib 
except: 
    import tempfile 
    import atexit 
    import shutil 

    mpldir = tempfile.mkdtemp() 
    atexit.register(shutil.rmtree, mpldir) # rm directory on succ exit 

    os.environ['MPLCONFIGDIR'] = mpldir 

    import matplotlib 

इस तरह अस्थायी निर्देशिका बाहर निकलने पर निकाल दिया जाता है:

import os  
import tempfile 
os.environ['MPLCONFIGDIR'] = tempfile.mkdtemp() 
import matplotlib 
+0

धन्यवाद @miguel संपादन के लिए – Esteban

+0

धन्यवाद। यह भी हमारा मामला था। – mirek

0

प्रति @Esteban मैं मॉड्यूल या स्क्रिप्ट में कुछ इस तरह से करते हैं।