Ubuntu16.04にてpythonのtkinterを導入した時に躓いた時のメモ書き
初めて書くので、見難いかもしれませんが、ご承知おきを。
今回、WindowsとUbuntuの2つの環境でpythonを使ってGUIの何かしらを作りたいなぁと思った時につまづいた事です。
pythonでGUIの何かしらを作るときに自分は「tkinter」というのを使いました。
これは、windowsだとpythonインストールする時に、一緒にインストールしてくれるやつらしいですね。
しかし、自分はUbuntuに「tkinter」が入ってなくて、
いざ、インストール!!って時につまずいたので、メモ書きを残します。
自分の環境(Ubuntu16.04)ではpyenvでpythonの複数のバージョンを混在させていました。
で、流れとしてはとりあえず
sudo apt-get -y install python3-tk tk-dev
を実行して、インストールします。
自分の環境では、python3を使用しているので、「python3-tk」をインストールしていますが、
「python2.x」の場合は、たぶん「python-tk」になると思われます。(自分は試していません。)
※importする際は
※python2.x系はimport Tkinter
※python3.x系はimport tkinter
※になるらしいです。
で、このままpythonで、いざ
import tkinter
って打ちこんでみると、
>>> import tkinter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/hogehoge/.pyenv/versions/3.6.5/lib/python3.6/tkinter/__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
って言われてしまいました。
なんか、うまくライブラリが結びついてないみたいな感じらしい。
なので、めんどくさいかもしれませんが、
pyenv uninstall x.x.x
で一旦pyenvでインストールしたpythonのバージョンを削除してから
再び
pyenv install x.x.x
でインストールし直したら、importできるようになっていました!!!
※pyenvはpythonのバージョンを複数混在してくれる奴です。
※ここでは詳細は省きます。pyenvってググれば出てくると思います。
で、アンインストールする時に気をつけないといけないのが、
一旦バージョンを他のものに切り替えてから、削除したほうがいいかもしれません。
つまり、
python 2.7と3.6を入れていたとして、2.7を削除するってなったら、一旦バージョンを3.6に切り替えてから、2.7を削除刷るみたいな感じ??
とりあえずこれで、importできるようになりました。
で、もう一点気をつけたほうがいい事がある。
それは、pyenv使ってたら、pythonのバージョンを消すと、
そのバージョンで使っていたpipでインストールしたパッケージとかも
全部消えてしまうということ。
なので、削除刷る前に、
pip list --format=columns | awk 'NR>2{print $1;}' > pip_list
で、パッケージリストのバックアップを取ってたらいいと思う。
で、pythonを再インストールしたら、
pip install --upgrade -r pip_list
でインストールしたらいいと思う。(--upgradeは個人的に好きなので付けてるだけ。)
ちなみに上のpip listのコマンドは、
pipでインストールしたものを、指定したフォーマットにしたがってリスト表示してくれるやつで、
その中で、必要なものをawkで抜き出してる感じ??
awkのNRは行数を表していて、2行目までは不必要な文言が入ってるので
それ以降の必要な部分だけ抜き出してます。
print $1で、1列目を抜き出してます。
そんな感じかな??