Macのpyenv環境でtkinterが使えるようになるまで

Python
スポンサーリンク

こんにちは、@yshr10icです。

Macのpyenv環境でtkinterを使おうとしたところ、躓いたので何をやったのかを備忘録として残しておきたいと思います。

スポンサーリンク

前提条件

  • PC:MacBook Pro(13-inch, 2020, Four Thunderbolt 3 ports)
  • OS:macOS Big Sur(バージョン:11.3.1)
  • pyenv:1.2.27-36-gb5d7216f

エラー①:ModuleNotFoundError: No module named ‘_tkinter’

Macのローカルで動くGUIツールを作りたいと思い、以下のサイトを参考にtkinterを軽く動かそうと思いました。

tkinter --- Tcl/Tk の Python インタフェース — Python 3.9.4 ドキュメント

コマンドラインから python -m tkinter を実行すると簡素な Tk インターフェースを表示するウィンドウが開き、システムに tkinter が正しくインストールされたことが分かり、さらにインストールされた Tcl/Tk がどのバーションなのかが表示されるので、そのバージョンの Tcl/Tk ドキュメントを選んで読めます。

上記のような記載があったので、python -m tkinterを実行したところ以下のエラーが発生しました。

ModuleNotFoundError: No module named '_tkinter'

tkinterはPythonの標準パッケージに入っているのですが、内部でTck/TkというGUIツールを使っているらしく、それが原因でエラーとなってしまったようです。

こちらを解決するために、先人の知恵をお借りしました。

Macのpyenv環境下でtkinterを使えるようにする方法 - Qiita
この記事について pyenv環境下でのPythonでmatplotlibを使おうとすると、以下のようなエラーが出る場合があります。 $ python main.py (略) ModuleNotFoundError: No mo...

エラー②:pyenvでPythonをインストールできない

Qiitaを参考にpyenvでインストールしたPythonをアンインストールし、再度インストールしようとしたところ、以下のようなエラーが発生しました。

python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.3.tar.xz...
-> https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tar.xz
Installing Python-3.8.3...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk

BUILD FAILED (OS X 11.3.1 using python-build 1.2.18-19-gcf81e5a0)
(略)
./Modules/posixmodule.c:9221:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ret = sendfile(in, out, offset, &sbytes, &sf, flags);
(略)

macOSをBig Surにアップグレードしたことによって、pyenvでPythonがインストールできなくなってしまったようです。

こちらを解決するために、先人の知恵をお借りしました。

macOS Big Sur にアップグレードした後にpyenv installできなくなった際の私の場合の解決方法 - Qiita
やろうとしたこと&遭遇したエラー macでpyenvで複数バージョンインストール&バージョン切り替えできる環境が機能していた (python 3.6 3.8系列) macOS Big sir にアップグレードし...

最後に

先人の方たちのおかげで無事にMacでtkinterを動かすことができました。やはりQiitaやZennなどでエラー解決の記事を書いてくださるのは非常にありがたいなと再認識しました。私も他の方の役に立てるようにエラー解決の記事を書いていきたいと思いました。(今回は他の方の記事の紹介で終わってしまいましたが)

タイトルとURLをコピーしました