がちおの書き残し

いろいろ自分のやった事について書き残していってるモノです。

Ubuntu16.04にてpythonのtkinterを導入した時に躓いた時のメモ書き

初めて書くので、見難いかもしれませんが、ご承知おきを。

 

 

今回、WindowsUbuntuの2つの環境でpythonを使ってGUIの何かしらを作りたいなぁと思った時につまづいた事です。

pythonGUIの何かしらを作るときに自分は「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列目を抜き出してます。

 

 

そんな感じかな??

 

とりあえず、最初は自己紹介。

僕は1993年生まれなのです。

なので、ぎりぎり「ゆとり世代」ってやつに含まれるのかもしれません。

知り合いの小さい子には、そろそろおじちゃんって呼ばれるくらいの年頃なのです。笑

僕の技術の触り始めというのは、RaspberryPi ModelB(だったと思います)でした。

ここからLinuxを触り始め、本を読みながらするのもアレなので、ネットとかで調べながらやってたり独学でやってるところがあったりします。あとは、自分でいろいろ試してみて、発見した僕なりのやり方があるかもしれません。

 

ので、、、、自分のやってきた事の中には、もっと効率の良い方法がある事があるかもしれません。

 

あと、プログラミングは最初のちょこっとだけCをやって、後はずっとC++です。これも、自分でいろいろ試しながらやり方を見つけてきたので、へんなところがあるかもしれません笑
ずっとC++をやってきたので、だいたい他の言語見ても、何をしてるのかとか少し分かるようにもなって来た頃です。

 

あと若干PHPとDBも触りました。塾の勤怠管理システムとかも作ったりしたのです笑(閉じてるネットワークで使うので、セキュリティ面は気にせずに作成しました) で、塾長からは何も連絡無いので、たぶん今も無事に動いてるはず。。。(動き始めて3,4年目くらいになるかな??)

 

で、家のPCがWindowsだったんですけど、HDDをSSDに移行しようと思ってコピー?してたら、途中で何かが起こり、windowsがお亡くなりになられました。ので、これをキッカケに、Ubuntuにしました。

 

というわけで、これから、頑張ってたまに更新していきますので、どうぞよろしくお願いします。

厳しいコメントでもいいので、頂けたら幸いです。