やりたいこと
pythonを使用してpowerpointを作った上で、そのソフトを他人へ配布したいと考えております。
概要
ただPython-pptxを使用したpyファイルをpyinstallerを使ってexe化を試みましたが、
exe化の処理自体にエラーが出ていないものの、出来上がったソフトを実行してもpython-pptxが
動いていない様です。
pythonに触ってまだ日が浅く、独学で勉強しているため知識に偏りがありプログラムを組む上での
常識や単語自体に対しても知識がないのは承知の上ですが、自分なりに出来る事・調べられる事は
やってみたのですが、このトラブルを解決することが出来ませんでした。
状況や試したことを下記にまとめますので誤り・不足・勘違い等あれば指摘頂けると幸いです。
よろしくお願いします。
状況詳細
以下コードはpowerpoint作成用のテストコード
pptx_try.py
from pptx import Presentation from pptx.util import Cm prs = Presentation() prs.slide_width = Cm(33.867) prs.slide_height = Cm(19.05) slide_layout = prs.slide_layouts[5] slide0 = prs.slides.add_slide(slide_layout) title0 = slide0.placeholders[0] title0.text= "test_try" pg = title0.text_frame.paragraphs[0] run1 = pg.runs[0] pp_name="try.pptx" prs.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
Traceback (most recent call last): File "inst_main.py", line 10, in <module> File "inst_pptx.py", line 7, in pptx File "pptx\api.py", line 28, in Presentation File "pptx\opc\package.py", line 73, in open File "pptx\opc\package.py", line 157, in _load File "pptx\opc\package.py", line 186, in load File "pptx\opc\package.py", line 190, in _load File "pptx\util.py", line 215, in __get__ File "pptx\opc\package.py", line 219, in _parts File "pptx\util.py", line 215, in __get__ File "pptx\opc\package.py", line 203, in _content_types File "pptx\opc\serialized.py", line 35, in __getitem__ File "pptx\util.py", line 215, in __get__ File "pptx\opc\serialized.py", line 49, in _blob_reader File "pptx\opc\serialized.py", line 135, in factory pptx.exc.PackageNotFoundError: Package not found at 'C:\Users\Y89D5~1.SAT\AppData\Local\Temp\_MEI114962\pptx\templates\default.pptx' [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
from PyInstaller.utils.hooks import collect_data_files datas= collect_data_files('pptx')
exe化に使用したのは以下のコード
pyinstaller pptx_try.py --onefile --additional-hooks-dir=./hooks
参考サイト
https://teratail.com/questions/184343
以上 乱文で申し訳ございませんがご回答の程、よろしくお願いします
まだ回答がついていません
会員登録して回答してみよう