やりたいこと
pythonを使用してpowerpointを作った上で、そのソフトを他人へ配布したいと考えております。
概要
ただPython-pptxを使用したpyファイルをpyinstallerを使ってexe化を試みましたが、
exe化の処理自体にエラーが出ていないものの、出来上がったソフトを実行してもpython-pptxが
動いていない様です。
pythonに触ってまだ日が浅く、独学で勉強しているため知識に偏りがありプログラムを組む上での
常識や単語自体に対しても知識がないのは承知の上ですが、自分なりに出来る事・調べられる事は
やってみたのですが、このトラブルを解決することが出来ませんでした。
状況や試したことを下記にまとめますので誤り・不足・勘違い等あれば指摘頂けると幸いです。
よろしくお願いします。
状況詳細
以下コードはpowerpoint作成用のテストコード
pptx_try.py
1from pptx import Presentation 2from pptx.util import Cm 3 4prs = Presentation() 5prs.slide_width = Cm(33.867) 6prs.slide_height = Cm(19.05) 7 8slide_layout = prs.slide_layouts[5] 9slide0 = prs.slides.add_slide(slide_layout) 10 11title0 = slide0.placeholders[0] 12title0.text= "test_try" 13pg = title0.text_frame.paragraphs[0] 14run1 = pg.runs[0] 15 16pp_name="try.pptx" 17prs.save(pp_name)
このコードをexe化するためコマンドプロンプト(本pyファイルがおいてあるフォルダに「cmd」を入力)を開き、下記コードを入力し実行。
pyinstaller pptx_try.py --onefile
処理はエラーが出ている雰囲気なく完了しコマンドプロンプトの最終行に「39861 INFO: Building EXE from EXE-00.toc completed successfully.」が表示される。
これで出来たフォルダの「dist」の中にあるファイル「pptx_try」を実行するが以下エラーが出てしまう。
自分で調べた限りだと「python-pptx」をexe化する際に一緒に処理してくれていないのが問題と考えた。
errer
1Traceback (most recent call last): 2 File "inst_main.py", line 10, in <module> 3 File "inst_pptx.py", line 7, in pptx 4 File "pptx\api.py", line 28, in Presentation 5 File "pptx\opc\package.py", line 73, in open 6 File "pptx\opc\package.py", line 157, in _load 7 File "pptx\opc\package.py", line 186, in load 8 File "pptx\opc\package.py", line 190, in _load 9 File "pptx\util.py", line 215, in __get__ 10 File "pptx\opc\package.py", line 219, in _parts 11 File "pptx\util.py", line 215, in __get__ 12 File "pptx\opc\package.py", line 203, in _content_types 13 File "pptx\opc\serialized.py", line 35, in __getitem__ 14 File "pptx\util.py", line 215, in __get__ 15 File "pptx\opc\serialized.py", line 49, in _blob_reader 16 File "pptx\opc\serialized.py", line 135, in factory 17pptx.exc.PackageNotFoundError: Package not found at 'C:\Users\Y89D5~1.SAT\AppData\Local\Temp\_MEI114962\pptx\templates\default.pptx' 18[14356] Failed to execute script 'pptx_try' due to unhandled exception!
※本エラーメッセージはログ画面が消えるのが早すぎてコピーを取れないためたまたま取れた違うexe化ファイルのログです。内容は殆ど一緒でかつ最後の2行のエラーメッセージは今回のpptx_try.pyと同じ内容であることは確認してます。
試したこと
①pythonのバージョアップ
②各installerのバージョンアップ
③exe化時にhidden importを使ってpptx関係のライブラリを読み込ませる
pyinstaller pptx_try.py --onefile --hidden-import "pptx,pptx.util"
④exe化時にhookファイル?を追加する
hookファイル?を作り、exe化
pptx_try.pyと同じディレクトリに「hooks」フォルダを作りその中に下記「hook」ファイルを入れました。
hook.py
1from PyInstaller.utils.hooks import collect_data_files 2datas= collect_data_files('pptx')
exe化に使用したのは以下のコード
pyinstaller pptx_try.py --onefile --additional-hooks-dir=./hooks
参考サイト
https://teratail.com/questions/184343
以上 乱文で申し訳ございませんがご回答の程、よろしくお願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。