初心者プログラマのひとり勉強部屋

若葉マークのプログラマー☺️

【python入門】djangoアプリ起動時のtkinterエラー

こんにちは

 

今回は4ヶ月前に作成したdjangoアプリケーションを久しぶりに起動したら

「ModuleNotFoundError: No module named '_tkinter'」

が出て起動できなかったのでその解消法を備忘録します。

------------------

macOS Mojave バージョン10.14.6

python 3.7.4

django 2.2.6

------------------

 

【結論】pythonアンインストール・tcl-tkの場所指定して再インストール

 

■経緯

venvで作成した仮想環境下で

$ python3 manage.py runserver

→ModuleNotFoundError: No module named '_tkinter'エラー

 

■対応内容

1日かけて試しまくりました。

・ネットで検索してこちらを参考に

pythonアンインストール・tkinterダウンロード・python再インストール

→同じエラー
 
githubのissueを参考に
/usr/local/Cellar/pyenv/1.2.17/plugins/python-build/bin/python-build
を編集
→元ファイルで同じ記述がなかったため、tkinterのところの記述を記載の通りに変更・/.bash_profileを変更
→同じエラー
 
・sys.appendでモジュール参照先を追加
→全く意味がなかった

 

         ■解決方法

stack flowで同じような質問に出会いました!

以下で解決しました。

 

・現在のpipリストを保存

$pip freeze > pip.txt

(心配なのでファイルがある確認してください)

 

pythonアンインストール

※現在の環境→$pyenv versions
pythonのバージョン→$python -V
で確認しておきます。
 
$ pyenv uninstall 3.7.4
 
tkinterをインストールしていない場合は
$brew install tcl-tk
 
・tcltkの場所指定してpython再インストール

$PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'" pyenv install 3.7.4

 

※確認

>>> import _tkinter

→さっきまで出ていたエラーが出ない!

 

・pipをインストールします

$pip install -r pip.txt

 

 

f:id:mocomo012:20200324195208p:plain

まだ未完成

当時2週間ほどで作った未完成サイトですが以前と同じく表示できました。 

見せれるサイトではないですが初めて開発したサイトなので蘇って嬉しい😭

 

  

参考サイトさま

https://stackoverflow.com/questions/58400564/tcl-tk-tkinter-not-installing-via-homebrew-pyenv-on-macos-mojave

こちらの同じ状況の質問を参考に、下記のサイトのコマンドを打ち、解決。

https://github.com/pyenv/pyenv/issues/1375#issuecomment-533182043

 

■余談

どうやらmatplotlibを入れていたのが怪しいです。

開発していた当時は全く問題なく動作したのに、後になって苦労しました、、