Как PyCharm создает virtualenv, который работает с Matplotlib в macOS? - PullRequest
0 голосов
/ 05 марта 2019

Я на MacOS 10.14.3 с использованием Python 3, установленного через Homebrew, и я установил virtualenv с pip:

$ brew install python
$ pip3 install virtualenv

Теперь следующая проблема хорошо задокументирована и известно, что они не работают :

$ virtualenv venv
$ source venv/bin/activate
$ pip install matplotlib ipython
$ ipython
In [1]: %matplotlib

ImportError: 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.
See the Python documentation for more information on installing Python as a
framework on Mac OS X. Please either reinstall Python as a framework, or try
one of the other backends. If you are using (Ana)Conda please install
python.app and replace the use of 'python' with 'pythonw'. See 'Working with
Matplotlib on OSX' in the Matplotlib FAQ for more information.

Теперь я заметил, что если я создаю virtualenv с помощью PyCharm, используя «Создать новый проект» - «Чистый Python» с «Интерпретатором проекта»выбрав «Новое окружение с использованием Virtualenv», я могу успешно использовать Matplotlib с любым установленным бэкэндом.Скажите, что virtualenv, созданный с помощью PyCharm, находится в папке venv2:

$ source venv2/bin/activate
$ pip install matplotlib ipython
$ ipython
In [1]: %matplotlib
Using matplotlib backend: MacOSX

Почему это работает?Как PyCharm создает virtualenv, чтобы Matplotlib работал? В их документах говорится, что они также используют пакет virtualenv, поэтому я понятия не имею, что они делают по-другому.

1 Ответ

0 голосов
/ 12 марта 2019

См. https://matplotlib.org/faq/osx_framework.html

Решение состоит в том, чтобы не использовать virtualenv, а вместо этого venv stdlib, который предоставляет аналогичные функциональные возможности, но не демонстрирует эту проблему.

Itошибка в виртуальной среде, созданная командой virtualenv PyCharm использует команду venv , как рекомендовано в приведенных выше документах.

Если вы создаете виртуальную среду в терминале с помощью команды venv , она должна работать без проблем.

...