PythonでUbuntu 16.04を使用しています。APTを使用してpython3-matplotlib
をインストールし、matplotlibバックエンドを印刷するとTKAgg
が表示されます。 python3-tk
がインストールされています。これは以下を実行することにより行われます:
Sudo apt install python3-matplotlib
python3 -c 'import matplotlib as mpl; print(mpl.get_backend())'
ただし、Python 3のvirtualenvを作成し、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())'
Virtualenvのmatplotlibはシステム内のTkAgg
バックエンドの存在を認識していないように見えますが、--system-site-packages
オプションが使用されていない場合、virtualenvがシステムサイトパッケージを表示しないことを考えると驚くことではありません。 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
バックエンドを使用するようにするにはどうすればよいですか?
次を実行してtk-dev
パッケージをインストールする必要があります。
Sudo apt install tk-dev
次に、次を実行して、virtualenvにmatplotlibを再インストールします。
pip --no-cache-dir install -U --force-reinstall matplotlib
次のコードがTkAgg
を返すかどうかを確認して、TkAggバックエンドが使用されていることを確認します。
python -c 'import matplotlib as mpl; print(mpl.get_backend())'