Как обеспечить, чтобы matplotlib в Python 3 virtualenv использовал бэкэнд TkAgg?
Я использую Ubuntu 16.04 с Python 3. Использование APT для установки python3-matplotlib
а затем печать бэкэнда Matplotlib дает TKAgg
, что ожидается, потому что Ubuntu 16.04 имеет python3-tk
установлены. Это делается путем запуска:
sudo apt install python3-matplotlib
python3 -c 'import matplotlib as mpl; print(mpl.get_backend())'
Однако, если я создаю virtualenv для Python 3, активируйте virtualenv, установите matplotlib
с помощью pip
а затем распечатать бэкэнд Matplotlib, я получаю agg
вместо. Это делается путем запуска:
virtualenv venv -p python3
source venv/bin/activate
pip install matplotlib
python -c 'import matplotlib as mpl; print(mpl.get_backend())'
Похоже, что matplotlib в virtualenv не знает о присутствии TkAgg
бэкэнд в системе, что неудивительно, учитывая, что virtualenv не видит пакеты системного сайта, когда --system-site-packages
опция не используется. Заставить matplotlib использовать TkAgg
бэкэнд и затем импорт matplotlib.pyplot
дает ImportError: cannot import name '_tkagg'
как и ожидалось. Это делается путем запуска:
python -c "import matplotlib as mpl; mpl.use('TkAgg'); import matplotlib.pyplot as plt"
Поэтому, как я могу гарантировать, что Matplotlib в Python 3 virtualenv использует TkAgg
бэкенд?
1 ответ
Вам необходимо установить tk-dev
пакет, запустив:
sudo apt install tk-dev
Затем переустановите matplotlib в virtualenv, выполнив:
pip --no-cache-dir install -U --force-reinstall matplotlib
Убедитесь, что бэкэнд TkAgg используется, проверив, возвращает ли следующий код TkAgg
:
python -c 'import matplotlib as mpl; print(mpl.get_backend())'