如何确保 Python 3 virtualenv 中的 matplotlib 使用 TkAgg 后端?

如何确保 Python 3 virtualenv 中的 matplotlib 使用 TkAgg 后端?

我使用的是 Ubuntu 16.04 和 Python 3。使用 APT 安装python3-matplotlib,然后打印 matplotlib 后端TKAgg,结果为 ,这是预料之中的,因为 Ubuntu 已经python3-tk安装了 16.04。运行以下命令即可完成:

sudo apt install python3-matplotlib
python3 -c 'import matplotlib as mpl; print(mpl.get_backend())'

但是,如果我为 Python 3 创建一个虚拟环境,激活该虚拟环境,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 不知道TkAgg系统中后端的存在,这并不奇怪,因为当--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"

因此,如何确保 Python 3 virtualenv 中的 matplotlib 使用TkAgg后端?

答案1

您需要tk-dev通过运行以下命令来安装该包:

sudo apt install tk-dev

然后,通过运行以下命令在虚拟环境中重新安装 matplotlib:

pip --no-cache-dir install -U --force-reinstall matplotlib

通过检查以下代码是否返回来验证是否使用了 TkAgg 后端TkAgg

python -c 'import matplotlib as mpl; print(mpl.get_backend())'

相关内容