Настройка Matplotlib MPLCONFIGDIR: рассмотрите возможность установки MPLCONFIGDIR в доступный для записи каталог для данных конфигурации matplotlib - PullRequest
9 голосов
/ 22 марта 2012

Я использую сервер Linux для настройки проекта django. Я получил эту ошибку: «Не удалось создать /var/www/.matplotlib; рассмотрите возможность установки MPLCONFIGDIR в доступный для записи каталог для данных конфигурации matplotlib»

Тогда я обнаружил, что $ MPLCONFIGDIR пустые. Поэтому я установил это так:

lab@base:~$ export MPLCONFIGDIR=~/website/graph
lab@base:~$ echo $MPLCONFIGDIR
/home/lab/website/graph

Этот путь является каталогом, в котором я хочу хранить изображения, созданные Matplotlib. Затем я убедился, что этот параметр в командной строке Python:

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

НО, в проекте django, который развернут в Apache с mod_wsgi, вышеупомянутая ошибка все еще существует. Я добавил следующие строки:

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

Он печатает "Нет"!

Кто-нибудь может мне помочь?

Спасибо.

Ответы [ 2 ]

20 голосов
/ 30 марта 2012

Установите MPLCONFIGDIR в коде перед импортом matplotlib.Убедитесь, что у каталога есть разрешения, позволяющие записывать его в приложение.

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

Кроме того, вы можете установить его на временный файл.

import os    
import tempfile
os.environ['MPLCONFIGDIR'] = tempfile.mkdtemp()
import matplotlib
0 голосов
/ 12 августа 2015

За @Esteban Я делаю что-то подобное в модулях или скриптах:

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

Таким образом, временный каталог удаляется при выходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...