0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python 3.11 で tkinter 使おうとしたらハマったので memo

Posted at

python で GUI アプリを作る必要に迫られたが、情弱なので、標準ライブラリの tkinter とやらがあるらしいぞ、から、実際に動かせるまでが長かったのでメモ。

環境

pyenvanyenv 経由でインストール。
brewpython-tk をインストールするのが早いらしいが、pyenv で複数バージョン使えるようにしてる意味... て話なので。。

version
Machine M2 Macbook pro
OS macOS Ventura 13.0.1
pyenv pyenv 2.3.6-15-g13d85686
python 3.11.0

結論: うまくいったやり方

% brew install tcl-tk
...
% export TCLTK_LIBS="-L/opt/homebrew/opt/tcl-tk/lib -ltcl8.6 -ltk8.6"
% export TCLTK_CFLAGS="-I/opt/homebrew/opt/tcl-tk/include"
% pyenv install 3.11.0
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.11.0.tar.xz...
-> https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
Installing Python-3.11.0...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.11.0 to /Users/seiro/.anyenv/envs/pyenv/versions/3.11.0

これで無事 tkinter を使った GUI アプリが立ち上がった。

pyenv の Issue に載ってた。
python3.11 では pkgconfig の --with-tcl-tk-* サポートはなくなっちゃったらしい?

うまくいかなかったやり方

ぐぐって出てきた、 Qiita や Zenn の記事のやり方(以下のように LDFLAGS/CPPFLAGS/PKG_CONFIG_PATH/PYTHON_CONFIGURE_OPTS 環境変数を設定する方法)はどれもうまくいかなかった。。

export PATH="/opt/homebrew/opt/tcl-tk/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/tcl-tk/lib"
export CPPFLAGS="-I/opt/homebrew/opt/tcl-tk/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/tcl-tk/lib/pkgconfig"
export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/opt/homebrew/opt/tcl-tk/include' --with-tcltk-libs='-L/opt/homebrew/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"

もちろんそれらの記事が悪いわけではなく、python 3.11 での変更が理由なのだろう。おとなしく 3.10.x を使っておくべきだったが、対応中はそんなことわからんかったんや。。。

上記 Issue の PR を見た感じでは、これらをうまく動かせるように修正しててそれが pyenv 2.3.6 に入ってるように見えたんだけど、どうして動かなかったのかまでは未確認。
あるいは 2.3.7 なら正しくインストールできたのかな?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?