J'utilise Ubuntu 16.04 avec Python 3. Utiliser APT pour installer python3-matplotlib
, puis imprimer le back-end de matplotlib donne TKAgg
, ce qui est attendu car Ubuntu en a 16.04. a python3-tk
installé. Ceci est fait en lançant:
Sudo apt install python3-matplotlib
python3 -c 'import matplotlib as mpl; print(mpl.get_backend())'
Cependant, si je crée un virtualenv pour Python 3, activez-le, installez matplotlib
avec pip
, puis imprimez le backend matplotlib. Je reçois plutôt agg
. Ceci est fait en lançant:
virtualenv venv -p python3
source venv/bin/activate
pip install matplotlib
python -c 'import matplotlib as mpl; print(mpl.get_backend())'
Il semble que matplotlib dans virtualenv ne soit pas au courant de la présence du serveur TkAgg
dans le système, ce qui n’est pas surprenant étant donné que virtualenv ne voit pas les packages de site système lorsque l’option --system-site-packages
n’est pas utilisée. . Forcer matplotlib à utiliser le backend TkAgg
, puis importer matplotlib.pyplot
donne ImportError: cannot import name '_tkagg'
comme prévu. Ceci est fait en lançant:
python -c "import matplotlib as mpl; mpl.use('TkAgg'); import matplotlib.pyplot as plt"
Par conséquent, comment puis-je m'assurer que matplotlib dans un virtualenv Python 3 utilise le backend TkAgg
?
Vous devez installer le paquet tk-dev
en lançant:
Sudo apt install tk-dev
Ensuite, réinstallez matplotlib dans virtualenv en lançant:
pip --no-cache-dir install -U --force-reinstall matplotlib
Vérifiez que le backend TkAgg est utilisé en vérifiant si le code suivant renvoie TkAgg
:
python -c 'import matplotlib as mpl; print(mpl.get_backend())'