こんにちは~
Pythonでエクセルやcsvを自動で編集できたら仕事が楽になると思うので、色々プログラムを作成しています。
今回は、tkinterをubuntuで使用しようとしたら色々なエラーが出て大変だったので、解決方法を記事にしました。(ちなみに、windowsのpowershellだと全くエラーでなかっです)
この記事が誰かの役に立ったら幸いです。
解決方法まとめ
最初に解決方法のまとめを書いておきます。
実行したコマンドと、インストールしたものは↓です。
詳細は次の詳細で書いてきます。
sudo nano /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu bionic main universe
deb http://archive.ubuntu.com/ubuntu bionic-security main universe
deb http://archive.ubuntu.com/ubuntu bionic-updates main universe
sudo rm -fr /var/lib/apt/lists/
sudo apt-get install python3-tk
sudo apt-get -y install ubuntu-desktop
export DISPLAY=localhost:0.0
Xmingのインストール
ハマった内容と解決方法詳細
解決方法の詳細を↓につらつらと書いてきます。
ModuleNotFoundError: No module named ‘tkinter’
tkinterのコードを作成して実行すると
ModuleNotFoundError: No module named ‘tkinter’
と表示された。
えーー、Pythonに標準で入ってるのかと思った。
ここから、tkinterを使用できるようになるまで長い闘いが始まった。
tkinterをインストールするために↓のコマンドを実行した。
sudo apt-get install python3-tk
404 Not Found [IP: 2001:67c:1360:8001::24 80]
sudo apt-get install python3-tkを実行してみるも、
rr:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-tk amd64 3.6.8-1~18.04
404 Not Found [IP: 2001:67c:1360:8001::24 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/p/python3-stdlib-extensions/python3-tk_3.6.8-1~18.04_amd64.deb 404 Not Found [IP: 2001:67c:1360:8001::24 80]
E: Unable to fetch some archives, maybe run apt-get update or try with –fix-missing?
と弾かれる。
くそーー
ここから色々ググったが中々インストールできない。
結局↓を実行することでインストールはできた。
sudo nano /etc/apt/sources.list
そして、↓を追加する(何してるのかよくわかってないが、確かにbionicなんちゃらエラーに表示されていたので良い感じがする)
deb http://archive.ubuntu.com/ubuntu bionic main universe deb http://archive.ubuntu.com/ubuntu bionic-security main universe deb http://archive.ubuntu.com/ubuntu bionic-updates main universe
さらに、↓のコマンドでキャッシュ削除?を実行して、tkinterをインストールする
sudo rm -fr /var/lib/apt/lists/ sudo apt-get install python3-tk
これでとりあえず、tkinterはインストールできた模様
ubuntuで実行した結果は↓(_tkinter.TclError: no display name and no $DISPLAY environment variableとなっているのが気になるが・・・)
- import tkinter
tkinter._test()
Traceback (most recent call last):
File “”, line 1, in
File “/usr/lib/python3.7/tkinter/init.py”, line 3988, in _test
root = Tk()
File “/usr/lib/python3.7/tkinter/init.py”, line 2023, in init
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
tkinter.Tcl().eval(‘info patchlevel’)
‘8.6.8’
tkinter.TclError: no display name and no $DISPLAY environment variable
インストールは出来たが、実行すると・・・
tkinter.TclError: no display name and no $DISPLAY environment variable
環境変数関連でエラーが出る模様・・・やはり・・・
↓のコードを追加して実行してみる。
if os.environ.get('DISPLAY','') == '': print('no display found. Using :0.0') os.environ.__setitem__('DISPLAY', ':0.0')
_tkinter.TclError: couldn’t connect to display “0.0”
上記を実行した結果
_tkinter.TclError: couldn’t connect to display “0.0”
なんかエラーが変わったーw
中々ゴール出来ない・・・
このエラーについては、GUIのインストールとXmingのインストールを実施し、環境編集を設定することで解消しました。これでようやくtkinterが使用できるようになりました。
GUIのインストール
調べてみるとUbuntuにGUIを入れていないことによるエラーとのことだったので、↓のコマンドでGUIを入れる※インストールに長時間かかった・・・
sudo apt-get -y install ubuntu-desktop
Xmingのインストール
Xmingなるものをインストールして、環境変数を設定する。
変数は↓に合わせる
export DISPLAY=localhost:0.0
とコマンドを打つ。
そうするとようやく、tkinterを起動することができた
使用したコード
サンプルとして↓のコードを使用して動作することを確認しました。
import pandas as pd import os, tkinter, tkinter.filedialog, tkinter.messagebox root = tkinter.Tk() root.withdraw() fTyp = [("","*")] iDir = os.path.abspath(os.path.dirname(__file__)) tkinter.messagebox.showinfo('test','処理ファイルを選択してください!') file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir) df = pd.read_csv(file, encoding='shift-jis') print(df)
以上になります!!
コメント