Python в Mac OS Pycharm выдает ошибку фреймворка с помощью «import matplotlib.pyplot as plt» - PullRequest
0 голосов
/ 06 мая 2018

Этот вопрос похож на вопросы здесь и здесь , но ни одно из решений там не работает, возможно, потому что я использую другую среду (PyCharm в Mac OS).

В виртуальной среде с PyCharm, работающим на 2.7.15, matplotlib установлен без каких-либо жалоб и однострочный Python-файл Python со следующим содержимым ...

import matplotlib.pyplot as plt

... консоль выдает следующую ошибку при запуске этого однострочного файла:

/Users/jbs/PycharmProjects/WakeUp/env/bin/python /Users/jbs/PycharmProjects/WakeUp/InputSound/WakeInputSound-and-plot-it-trial3.py
Traceback (most recent call last):
  File "/Users/jbs/PycharmProjects/WakeUp/InputSound/WakeInputSound-and-plot-it-trial3.py", line 2, in <module>
    import matplotlib.pyplot as plt
  File "/Users/jbs/PycharmProjects/WakeUp/env/lib/python2.7/site-packages/matplotlib/pyplot.py", line 115, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/Users/jbs/PycharmProjects/WakeUp/env/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 62, in pylab_setup
[backend_name], 0)
  File "/Users/jbs/PycharmProjects/WakeUp/env/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 17, in <module>
from matplotlib.backends import _macosx
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. 

Любая помощь в решении этой проблемы будет приветствоваться. Я пробовал около дюжины вещей, и ни одна из них не работает ...

(импорт matplotlib сам по себе не вызывает проблем, и этот вопрос может быть связан с этим one , но он явно отличается ...)

1 Ответ

0 голосов
/ 06 мая 2018

Подробнее см .: что такое бэкэнд . Вам нужно установить свой бэкэнд. Существует два типа бэкэндов: бэкэнды пользовательского интерфейса (для использования в pygtk, wxpython, tkinter, qt4 или macosx; также называемые «интерактивными бэкэндами») и бэкенды в печатном виде для создания файлов изображений (PNG, SVG, PDF, PS; также называется «неинтерактивные бэкэнды»).

Существует четыре способа настройки вашего бэкэнда. Если они конфликтуют друг с другом, будет использоваться метод, упомянутый последним в следующем списке, например, Вызов use () переопределит настройку в вашем matplotlibrc.

  1. Внутренний параметр в вашем файле matplotlibrc (см. Пользовательская настройка matplotlib):

    backend : WXAgg   # use wxpython with antigrain (agg) rendering
    
  2. Задание переменной среды MPLBACKEND для текущей оболочки или для отдельного сценария:

    > export MPLBACKEND="module://my_backend"
    > python simple_plot.py
    
    > MPLBACKEND="module://my_backend" python simple_plot.py
    

    Установка этой переменной среды переопределит параметр backend в любом matplotlibrc, даже если в вашем текущем рабочем каталоге есть matplotlibrc. Поэтому настройка MPLBACKEND глобально, например, в вашем .bashrc или .profile не рекомендуется, поскольку это может привести к нелогичному поведению.

  3. Чтобы установить бэкэнд для одного скрипта, вы можете альтернативно использовать аргумент командной строки -d:

    > python script.py -dbackend
    

    Этот метод не рекомендуется использовать, так как аргумент -d может конфликтовать со сценариями, которые анализируют аргументы командной строки (см. Выпуск № 1986). Вместо этого вы должны использовать MPLBACKEND.

  4. Если ваш скрипт зависит от конкретного бэкэнда, вы можете использовать функцию use ():

    import matplotlib
    matplotlib.use('PS')   # generate postscript output by default
    

    Если вы используете функцию use (), это необходимо сделать перед импортом matplotlib.pyplot. Вызов use () после импорта pyplot не будет иметь никакого эффекта. Использование use () потребует изменений в вашем коде, если пользователи захотят использовать другой бэкэнд. Поэтому вам следует избегать явного вызова use (), если это не является абсолютно необходимым.

Примечание. Спецификации имени бэкэнда не чувствительны к регистру; например, "GTKAgg" и "gtkagg" эквивалентны.

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