環境:Windows10
PDFファイルから画像を生成するプログラムを作りました。
しかし、exe化したところ画像が生成されません。
エラー発生条件
・exe化するときのオプションに --noconsole --onefile の両方を付ける
オプションに --onefile のように片方のオプションを付けても問題なく意図した動作になりますが、--noconsole --onefile のように 両方のオプションを付けると
Failed to execute script main
ウィンドウが出てしまいます。
(PDFファイルはexeファイルと同ディレクトリに入れてます)
前回はソースコード上に
__file__
の記述があるとexeで取得できない指摘を受け、コードを書き換えたのですが上手くできませんでした。
該当のソースコード
Python
1from pdf2image import convert_from_path 2import os 3import sys 4 5pdf = os.path.dirname(sys.argv[0]) + "/" + "test.pdf" 6 7images = convert_from_path(pdf) 8i = 0 9for image in images: 10 image.save(os.path.dirname(sys.argv[0]) + "/" + "{}.png".format(i), "png") 11 i += 1 12 13 # PDFのページ数が複数あっても1ページ目のみPNG変換 14 # PDFの全ページをPNG変換するには次のif文を無効化する 15 if i == 1: 16 break
追記
エラー(sys.stderr = open('stderr.txt', 'w') で確認)
Traceback (most recent call last): File "site-packages\pdf2image\pdf2image.py", line 409, in pdfinfo_from_path File "subprocess.py", line 804, in __init__ File "subprocess.py", line 1142, in _get_handles OSError: [WinError 6] ハンドルが無効です。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\ユーザ名\Desktop\test.py", line 9, in <module> images = convert_from_path(pdf) File "site-packages\pdf2image\pdf2image.py", line 89, in convert_from_path File "site-packages\pdf2image\pdf2image.py", line 430, in pdfinfo_from_path pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?
システム環境変数 にパスは追加してあるはず・・・。
再起動済み
スクリプトの前半で `sys.stderr = open('stderr.txt', 'w')` 等として、エラー出力をファイルに得た場合、問題が発生する条件では何か情報は得られますでしょうか。
`pdf2image` は Poppler コマンドを呼び出すライブラリなので、以下の issue の事例と同様、 `subprocess` が標準入出力のハンドルを得るのに失敗していることが原因の可能性があるかと存じます。
https://github.com/pyinstaller/pyinstaller/issues/1339
質問文に追記しました。
パスを通したつもりです。しかし、パスを通していないようなエラーが表示されました。
回答1件
あなたの回答
tips
プレビュー