Python PR

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

記事内に商品プロモーションを含む場合があります

こんにちは、@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を軽く動かそうと思いました。

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

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

ModuleNotFoundError: No module named '_tkinter'

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

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

エラー②: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がインストールできなくなってしまったようです。

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

最後に

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

ABOUT ME
yshr10ic
都内のIT企業で働くエンジニアです。普段はデータサイエンス系のコンペに参加したりしています。ガジェット大好きです!