こんにちは,しまさん(@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も削除しましょう.
Download and install Tcl with ActiveTcl, the precompiled, supported Tcl distribution. ActiveTcl Community Edition is free to use in development. Download and Install Tcl: ActiveTcl | ActiveState – ActiveState |
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ライフを!!!
参考
macOS Mojave に pyenv install 3.6.6 でPython3系をインストールしようとしたらエラーが発生した。 pyenv install 3.6.6 でエラーが発生する。 – Medium |
普段コードを書くときはjupyterを使っていて、matplotlibのプロットがブラウザ内に行われるの為この問題には気付かなかった。改めてpythonのコードを書いてみて描画関連でエラーが出ていることに気が付いた。 環境 何が起こったか 解決方法 確認 原因 参考 環境 Ubuntu16.02 python 3.5.1 (pyenv) matplotlib 1.5.2 何が起こったか 最初はmatplotlibで描画するコードであるplt.show()としてもウンともスンとも言わなかった。で探しているうちにmatplotlibのbackendにTkを指定しないと描画が行われないとの情報があっ… matplotlibが描画されない – DISTRICT 37 – DISTRICT 37 |