MacOSでPythonとtkinterを正しく設定する方法: 2024年最新ガイド

こんばんはエンジニアの眠れない夜です。

はじめに

MacOSユーザーの皆さん、Pythonプログラミングを始めようとして、tkinterのインポートでつまずいていませんか?

もしくは、OSのバージョンを上げてtkinterを使ったGUIをクリックしても反応しないという問題に遭遇していませんか?

この記事では、MacOS 14.x (Sonoma) 以降で発生する一般的なPythonとtkinterの問題を解決する手順を詳しく解説します。

目次

  1. 問題の概要
  2. 解決手順
  3. 注意点
  4. 仮想環境の使用
  5. まとめ

問題の概要

MacOS 14.x以降のバージョンでtkinterをインポートしたときに、以下のようなエラーに遭遇することがあります:

import tkinter as tk
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/__init__.py", line 38, in
import _tkinter # If this fails your Python may not be configured for Tk
^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named '_tkinter'

これは、MacOS 14.x以降のバージョンでPython3.11以下を利用したときに発生することが分かっています。

解決手順

以下の手順に従って、MacOSにPythonとtkinterを正しく設定しましょう。

注意点

  • この設定により、システム全体で新しくインストールしたPython 3.12が使用されるようになります。
  • 以前使用していたPython(例:Homebrewでインストールしたもの)は使用されなくなります。
  • 他のPythonベースのアプリケーションやツールに影響を与える可能性があります。

1 Python公式サイトから最新のPythonインストーラー(macOS 64-bit universal2 installer)をダウンロードしてインストールします。

2 ターミナルを開き、.zshrcファイルを編集します:

nano ~/.zshrc

3 ファイルの最後に以下の行を追加します:

export PATH="/Library/Frameworks/Python.framework/Versions/3.12/bin:$PATH"
alias python3="/Library/Frameworks/Python.framework/Versions/3.12/bin/python3"
alias python="/Library/Frameworks/Python.framework/Versions/3.12/bin/python3"

4 ファイルを保存し、閉じます。

5 新しい設定を反映させるため、以下のコマンドを実行します:

source ~/.zshrc

6 設定が正しく適用されたか確認するため、以下のコマンドを実行します:

which python3
python3 --version

7 tkinterがインポートできるか確認します:

python3 -c "import tkinter; print(tkinter.TkVersion)"

仮想環境の使用

特定のプロジェクトでのみ新しいPythonを使用したい場合は、仮想環境(venv)の使用をおすすめします:

/Library/Frameworks/Python.framework/Versions/3.12/bin/python3 -m venv myenv
source myenv/bin/activate

これで、プロジェクトごとに独立したPython環境を構築できます。

まとめ

本記事では、MacOS 14.x以降でPythonとtkinterを正しく設定する方法を解説しました。

この手順に従うことで、「ModuleNotFoundError: No module named ‘_tkinter’」というエラーを解決し、tkinterをインポートできるようになります。

この記事があなたのお役に立てれば幸いです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください