現在pythonを使いプログラムを書いています。
このプログラムをpythonの実行環境のない友人に上げようと思い、pyinstallerを用いて.pyファイルを.exeファイルに変換しました。
しかし、.exeファイルを実行すると以下のようなエラーが出てきました。
Exception in Tkinter callback Traceback (most recent call last): File "tkinter\__init__.py", line 1705, in __call__ File "scratch_4.py", line 21, in onB2Click ModuleNotFoundError: No module named 'pikepdf._cpphelpers'
後述する.exeに変換する前のプログラムではエラーもなく実行できたのですが.exeに変換すると上記のエラーが出てきました。
エラーメッセージから判断するに、もしかしたらpikepdfをanacondaにpipを使い無理やりインストールしたのが原因だと思っています。
今思いつくのはpikepdfで使う部分のコードをコピーして使おうと考えていますが、ほかにもっと楽な方法はありますでしょうか?
以下が.exeに変換する前のコードです。
python
1 2from tkinter import * 3from tkinter import ttk 4from tkinter import filedialog 5from pikepdf import Pdf 6import os,sys 7def onB1Click(): 8 f = filedialog.askopenfile(initialdir='/temp/') 9 if f: 10 with f: 11 v1.set(f.name) 12 global filepath 13 filepath = f.name 14 15def onB2Click(): 16 filename = input("新しいファイル名") 17 password = "aaaaa" 18 pdffile = Pdf.open(filepath, password=password) 19 newpdf= Pdf.new() 20 newpdf.pages.extend(pdffile.pages) 21 output_dir = os.path.dirname(filepath) 22 newpdf.save(filename+".pdf") 23 print("finish") 24 25 # fn = filedialog.askopenfilename(initialdir='/temp/') 26 # if fn: 27 # with open(fn, "rb") as f: 28 # for line in f: 29 # print(line, end='') 30if __name__ == "__main__": 31 root= Tk() 32 root.title("dialogs") 33 root.columnconfigure(0, weight=1) 34 frame = ttk.Frame(root, padding=10) 35 frame.columnconfigure(0, weight= 1) 36 frame.rowconfigure(0, weight=1) 37 frame.grid(sticky=(N,W,S,E)) 38 b1 = ttk.Button(frame, text="ファイル参照", command=onB1Click) 39 b1.grid(row=0, column=0, sticky=(W)) 40 v1 = StringVar() 41 l1 = ttk.Label(frame, textvariable=v1) 42 l1.grid(row=0, column=1) 43 b2 = ttk.Button(frame, text="解除実行", command= onB2Click) 44 b2.grid(row=1, column=0, sticky=(W)) 45 v2 = StringVar() 46 l2 = ttk.Label(frame, textvariable=v2) 47 l2.grid(row=1, column=1) 48 root.mainloop()
追記
tk自体は起動するのですが、プログラムを実行し解除実行をクリックしたところで先のエラーが履かれてしまいます
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。