質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.33%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

382閲覧

ModuleNotFoundErrorについて

Refrain

総合スコア646

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2025/02/11 09:48

こちらのようにRaspberry PiにインストールされているPythonのアップデート作業中です。
現状、Pythonそのものはv3.12.9への移行が完了しましたが、python -m tkinterを実行した際にModuleNotFoundErrorが発生しています。
エラー情報としては下記のようになっており、何らかの設定が必要のような認識でいますが、何の設定が必要なのか…?と悩んでいます。

Traceback (most recent call last): File "<frozen runpy>", line 189, in _run_module_as_main File"<frozen runpy>", line 148, in _get_module_details File"<frozen runpy>", line 112, in _get_module_details File "/usr/local/bin/python3.12/tkinter/__init__.py", line 38, in <module> import _tkinter # If this fails your Python may not be configured for Tk ^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named '_tkinter'

別サイトなどではpython3-tkのインストールで解決した事例もあるようで試してはみましたが、以下のメッセージが出力された点も理解が出来ていないです(v3.12.9へ切り替えたにも関わらず、v3.11.23での判定がされている?)。

python3-tk はすでに最新バージョン (3.11.2-3) です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Refrain

2025/02/11 10:02

コメントありがとうございます。 質問末尾に記載のターミナルの情報から、インストールそのものがされていないのではないか?と思っていますが、この状況での再ビルドは効果があるものなのでしょうか?
quickquip

2025/02/11 10:25 編集

すみません。python3-tkは(質問の状況とは)なんの関係もない話でした なのでそのインストールは何も関与しません
Refrain

2025/02/11 10:29

やはりそのようですよね… 恐らくはv3.12.9導入時点で何らかの設定不足があるのか…?とは思っていますが、質問のような状況(aptでのインストール時に別バージョンが参照されている?)で何か前例の見覚えなどあったりしませんか?
melian

2025/02/11 10:59

手元の Ubuntu Linux 24.10 では python3.12-tk というパッケージに以下の shared library が含まれています。(import _tkinter でこの shared library が読み込まれます) /usr/lib/python3.12/lib-dynload/_tkinter.cpython-312-x86_64-linux-gnu.so そちらの環境でデフォルトでインストールされているのは Python3.11 なのだと思います。(/usr/bin/python3.11 というコマンドがあるはず)
Refrain

2025/02/11 11:10

コメントありがとうございます。 確かにデフォルトはv3.11になっていましたね。 一時凌ぎ的にですが、v3.12に上げる理由になっていた機能の利用を断念してv3.11にて運用し、少し調べたりしながらv3.12の環境が作り込め次第、順次そちらへ移行の形にしてみます。
quickquip

2025/02/11 11:10

> なのでそのインストールは何も関与しません と思いましたが……もともとtkが入ってなかったなら、python3-tk を入れたことでtkも入って、ビルドをconfigureからやり直したら動くこともありえるのでは?
Refrain

2025/02/11 11:29

tkinterが見付からないエラー → 理屈的には分かる apt installで最新バージョン判定 → ??? といった状況にあり、そもそもpython3-tkは入っているから、新たに入れさせてくれないという謎の状況です… 不幸中の幸いだったのは、今回のきっかけになったモジュール(typing)は機能的に必須なものではなかったため、今回は切り捨てる方向で走らせておこうかと思います。 両名、コメントありがとうございました。
quickquip

2025/02/11 11:31

tkinter ですよね?
melian

2025/02/11 11:37

補足しておきますと、x86_64 版 Ubuntu Linux 24.10 では libtcl8.6 と libtk8.6(Tcl/Tk 関連の shared library)を apt でインストールしてから、Python3.12 をビルドすれば先述の _tkinter.cpython-312-x86_64-linux-gnu.so が作成されます。
quickquip

2025/02/11 12:00

ちょっと気になるのでOS(ディストリビューション)の情報を質問に書いてもらえないでしょうか?
Refrain

2025/02/12 04:26

返答遅れて申し訳ありません。 確認次第折り返させていただきます。
guest

回答2

0

https://devguide.python.org/getting-started/setup-building/index.html#build-dependencies

の Linuxの項目

If you want to build all optional modules, install the following packages and their dependencies:

sudo apt-get install build-essential gdb lcov pkg-config \ libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev \ libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \ lzma lzma-dev tk-dev uuid-dev zlib1g-dev libmpdec-dev

で、(tkinter がそうであるところの)オプショナルなモジュールをインストールしたければこれこれのパッケージを入れなさいと指定がある中に tk-dev が入っており、これをインストールしていればTclもTkもビルドで必要なファイルも入るはずで、Raspberry Pi OS で tkinter が使えなくなるような事態にはならないはすです。

(クリーンな環境から始めなかったため、Tclやtkを削除してビルドしてみたりと色々試しましたがtkinterが使えない環境は再現できずでした)
(なおlibmpdec-devは見つからなかったので省いてよいかと)


python3-tk パッケージはシステム下のPythonである /usr/bin/python3 が使うtkinterを /usr/lib/python3.X に入れるだけで、質問者さんがやったような "自分でビルドして /usr/local にインストールしたCPython" などに影響を与えるものではありません。
システム下のPythonが3.11.Xならpython3-tk パッケージが3.11.Xなのも当たり前
/usr/localに入ったPython3.12が、/usrに入っているPythonのパッケージを読まないのも当たり前
です。

投稿2025/02/12 15:18

編集2025/02/12 15:29
quickquip

総合スコア11251

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2025/02/12 15:27

質問コメントの時点でなぜかtk-devが目に入ってなかったんですよね……。この中のどれかなんだけどな、などと謎の勘違いをしてしまい指摘が遅れました
guest

0

Raspberry PiにPython v3.12.9をアップデートした際、python -m tkinterを実行するとModuleNotFoundErrorが発生しているようです。この問題は、新しいバージョンに対してpython3-tkが正しくインストールされていない可能性があります。

Python 3.12.9を使用していることを確認し(python3 --version)、以下のコマンドでpython3-tkを再インストールしてください:

sh
sudo apt-get install python3-tk
それでも問題が解決しない場合、Python 3.12.9を再インストールしてすべての依存関係が正しく設定されているか確認する必要があるかもしれません。

投稿2025/02/12 09:32

Edward357J

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.33%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問