TkinterはGUIを作成するためのPythonの標準モジュールですが、環境によって「No module named '_tkinter'」が発生する場合があります。
管理者権限がある場合にはyumコマンドなどのパッケージ管理ツールで必要なパッケージをインストールすればよいのですが、管理者権限がない場合にはソースコードからコンパイルする必要があります。
ここでは、エラーへの対処方法として、パッケージ管理ツールを使用する方法とソースコードからコンパイルする方法の両方をご紹介いたします。
目次
- Tkinterパッケージのインストール
- エラーの発生(ModuleNotFoundError: No module named '_tkinter')
- 管理者権限がない場合のTcl/Tkのインストール
- Python 3.9の再インストール
- パスの設定
- 最後に
- まとめ
Tkinterパッケージのインストール
Pythonがすでにインストールされている場合、pipコマンドによりtkinterをインストールすることができます。
pip install pytk
動作確認には、次のコマンドを使用します。
python -m tkinter
正常にインストールされている場合には、以下のウィンドウが表示されます。
エラーの発生(ModuleNotFoundError: No module named '_tkinter')
Tkinterの動作確認(python -m tkinter)でウィンドウが表示されれば、正常にインストールされているため、それで問題ありません。
しかし、次のエラーが発生する場合があります。
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
Tkは、グラフィカルなウィンドウやウィジェットを作成するためのツールキットで、Tcl(Tool Command Language)はこれを制御するためのスプリクト言語です。これらを合わせてTcl/Tkとよびます。
Tkinterは、Tcl/Tk GUI ツールキットに対する標準の Python インターフェースです。このため、元であるTcl/Tkがインストールされていない場合にはTkinterも使用することができません。
そこで、Tcl/Tkをインストールします。
Debian系(debパッケージ)では、
$sudo apt-get install python3-tk
により、RedHat系(rpmパッケージ)では、
$sudo yum install python3-tkinter
により、tkをインストールできます。OSによっては、
$sudo yum install tk-devel
とすることで、解決する場合もあります。
Macの場合には、homebrewを使用している場合、
$brew install python-tk@3.9
としてインストールします。@3.9の数字はPythonのバージョンに合わせて変更します。homebrewがインストールされていない場合は、次のコマンドでインストールできます。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
管理者権限がない場合のTcl/Tkのインストール
管理者権限がない場合には、apt-getやyumなどのパッケージ管理システムを使用できません。
色々試したところ、Tcl/Tkをソースコードからコンパイルしてインストールすることで解決することが分かりました(他にもっといい方法があるかもしれません)。
Tcl/Tkのソースコードは公式サイトかGitlubからダウンロードできます。
公式サイト:https://tcl.tk/software/tcltk/
Github:https://github.com/tcltk
ここでは、tcl8.6.14-src.tar.gzとtk8.6.14-src.tar.gzをダウンロードし、インストールの場所は「$HOME/local/」としました。
tkのインストールは以下のコマンドで行います。
tar xvf tk8.6.14-src.tar.gz
cd tk8.6.14
cd unix
./configure --prefix=$HOME/local/
make
make install
tclのインストールは以下のコマンドで行います。
tar xvf tcl8.6.14-src.tar.gz
cd tcl8.6.14
cd unix
./configure --prefix=$HOME/local/
make
make install
オプション--prefix=にインストール先のディレクトリを指定します。以上により、Tcl/Tkをローカルディレクトリにインストールできます。
Python 3.9の再インストール
インストールしたTcl/TkとPythonをリンクするために、Pythonを再インストールします。
Pythonのソースコードは以下からダウンロードできます。
公式サイト:https://www.python.org/
ここでは、Python-3.9.9.tgzをダウンロードしました。次のコマンドでローカルディレクトリにPythonをインストールできます。
tar xvf Python-3.9.9.tgz
cd Python-3.9.9
./configure --prefix=$HOME/local/
make
make install
Version 3.9よりも前のバージョンの場合には、configureのオプションに
--with-tcltk-includes=
--with-tcltk-libs=
を追加して、Tcl/Tkのヘッダーとライブラリの場所を指定しなければなりません(参考)。
例えば、Tcl/Tkをインストールするときに、--prefix=$HOME/localとした場合には以下のようにします。
./configure --prefix=$HOME/local --with-tcltk-includes=$HOME/local/include --with-tcltk-libs=$HOME/local/libs
パスの設定
インストールしたコマンドとライブラリが読み込まれるように、パスを設定します。「$HOME/.bashrc」に、次の2行を追加します。
インストール先として指定した「$HOME/local/」ディレクトリにあるbinとlibのパスを追加しています。
export PATH=$HOME/local/bin:${PATH}
export LD_LIBRARY_PATH=${HOME}/local/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=${HOME}/local/include:$C_INCLUDE_PATH
最後に
Pythonを再インストールしましたので、tkinterもpipでインストールしておきます。
$ pip install pytk
以上で、すべての作業が終了になります。動作確認(python -m tkinter)を行い、ウィンドウが表示されれば、インストールは完了です。
まとめ
インストールしたtkinterを実行したときにエラー「No module named '_tkinter'」が発生した際の対処法をまとめました。
ご参考になりましたら幸いです。