TECHNOLOGY

Tkinterを使用したときのエラー「No module named '_tkinter'」の対処方法

TkinterはGUIを作成するためのPythonの標準モジュールですが、環境によって「No module named '_tkinter'」が発生する場合があります。

管理者権限がある場合にはyumコマンドなどのパッケージ管理ツールで必要なパッケージをインストールすればよいのですが、管理者権限がない場合にはソースコードからコンパイルする必要があります。

ここでは、エラーへの対処方法として、パッケージ管理ツールを使用する方法とソースコードからコンパイルする方法の両方をご紹介いたします。

目次

  1. Tkinterパッケージのインストール
  2. エラーの発生(ModuleNotFoundError: No module named '_tkinter')
  3. 管理者権限がない場合のTcl/Tkのインストール
  4. Python 3.9の再インストール
  5. パスの設定
  6. 最後に
  7. まとめ

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'」が発生した際の対処法をまとめました。

ご参考になりましたら幸いです。

-TECHNOLOGY
-