I am using Ubuntu 16.04 with Python 3. Using APT to install python3-matplotlib
and then printing the matplotlib backend gives TKAgg
, which is expected because Ubuntu has 16.04 has python3-tk
installed. This is done by running:
sudo apt install python3-matplotlib
python3 -c 'import matplotlib as mpl; print(mpl.get_backend())'
However, if I create a virtualenv for Python 3, activate the virtualenv, install matplotlib
using pip
and then print the matplotlib backend, I get agg
instead. This is done by running:
virtualenv venv -p python3
source venv/bin/activate
pip install matplotlib
python -c 'import matplotlib as mpl; print(mpl.get_backend())'
It looks like matplotlib in the virtualenv is not aware of the presence of the TkAgg
backend in the system, which is not surprising given the virtualenv does not see the system site packages when the --system-site-packages
option is not used. Forcing matplotlib to use the TkAgg
backend and then importing matplotlib.pyplot
gives ImportError: cannot import name '_tkagg'
as expected. This is done by running:
python -c "import matplotlib as mpl; mpl.use('TkAgg'); import matplotlib.pyplot as plt"
Therefore, how do I ensure that matplotlib in a Python 3 virtualenv uses the TkAgg
backend?