Python

macOS(Mojave)でNo module named ‘_tkinter’を解決する(pyenv , Python3.x)

こんにちは,しまさん(@shimasan0x00)です.

pyenv:Python3.6.0でtkinterをimportとしようとするとエラーが出てしまいます.

ImportError: No module named '_tkinter’

tk.h version (8.6) doesn't match libtk.a version (8.5)

 

私はここで大変困ったのでその解決方法を紹介したいと思います.

結局pyenvのPythonをインストールしなおすことで解決しました.

環境

macOS Mojave(10.14)

pyenv Python3.6.0

スポンサーリンク

解決方法

まずはpyenvのPythonをアンインストールします.

ですがその前にpipでインストールしたものをバックアップしときます.

pip freeze > pip.txt

ただpipでscikit-learnをインストールしている場合はScipyが依存しているのでpip.txt内でScipyが先にくるようにしておいてください(アルファベット順ではscikit-learnが先に来てしまう).

ではPythonをアンインストールします.

pyenv uninstall python3.6.0

 

また,/Library/FrameworksにあるTcl.framework,Tk.frameworkも削除しましょう.

ActiveTclのサイトから赤枠部分の8.5.18をインストールしましょう.

もしHomebrewでtcl-tkをインストールされているのであればアンインストールしておいてください.

ではもう一度pyenvでインストールします.

私の場合はpython3.6.7にしました.

CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
pyenv install -v 3.6.7
pyenv global python3.6.7

あとは.bash_profileに以下の設定を追加します

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

REPLでimport tkinterをすると…

エラーが出ない!!!!やりました!!

pipのインストールをするのは

pip install -r pip.txt

スポンサーリンク

さいごに

今回はtkinterのインポートができないエラーの対処方法について紹介しました.

tkinter使えないのは致命傷だったので解決できてよかったです.

よいPythonライフを!!!

[入門]Python初心者が圧倒的成長するために使うサービス,本Python初心者向けの本,Webサービスについて網羅的に紹介をしています.Pythonの勉強で私が実際に使用した本です.入門書をさらに細分化し,学ぶならどのレベルがいいのかわかりやすくしています....

参考

ABOUT ME
しまさん
高専→大学編入→大学院→? / 計算社会科学,ウェブマイニングなど / グレープフルーツと本が好き / SNS(Twitter,YouTube,Twitch)やVTuberのデータ分析屋 詳しいプロフィールはこちら≫ 投げ銭はコチラ