Pythonファイルをexe化する ④

Pythonンプログラムを作っても、他人に渡す時はexeファイルにしないといけません。

コマンドプロンプト(いわゆるDOSプロンプト)上で動作させるプログラム(exeファイル)に
変換するのです。

① 先ず簡単なプログラムをexeファイルにします。

その過程は次のようになります。

cd C:\Users\xxx\デスクトップ\exe_file1
C:\Users\xxx\デスクトップ\exe_file1\pyinstaller -F -w test1.py
  コマンドプロンプト画面で動作するように -w を追加します。

これで30秒位かかりますが、distホルダーの中に”test2.exe”が出来上がります。

開発環境は、W10、Python3.7.3です。

 

② 次は添付画像が必要なプログラムをexeファイルに変換します。

画像、音源、textdataなどまとめたholderを、pythonプログラム(text2.py)と纏めて
exe化したいのです。

cd C:\Users\xxx\デスクトップ\exe_file2
C:\Users\xxx\デスクトップ\exe_file2\pyinstaller -F test2.py
      今回はプロンプト画面は不要ですので -w は付けません。

 

さて、どうなったでしょうか?

 

③ exeを作って動作させると、”画像が有りません”と言われました。

  原因はpyinstaller -Fとしてexeファイルにしても、画像のpathを見つけられませんでした。

  対策が見つかりました。

   exeファイルと一緒にできる  test2.spec にa.datas += [(‘A_1a.png’, ‘.\\A_1a.png’, ‘DATA’)]などの

  pathを追加します。 

   次に C:\Users\xxx\デスクトップ\exe_file2\pyinstaller test2.specとすると今度はしっかりとexeファイルが出来るはずです。

さて、どうなったでしょう?

やっぱりまたエラーでした。

 

次回で絶対成功させます。 ではまた。

 

④ 遂にexe化成功!

時間がないので結論を書きます。

exe化に使うpyinstallerが、外部からimportした画像処理関数と相性が悪かったということらしいです。

使っていた画像処理関数Pillowを次の様に変更しました。

def resource_path(relative_path):
 if hasattr(sys, ‘_MEIPASS’):
  return os.path.join(sys._MEIPASS, relative_path)
 return os.path.join(os.path.abspath(“.”), relative_path)

これを使用して今までのcodeを全部書替えて、上記でtryしていたpyinstallerでexe化したらBingo!

このような問題図が表示されました。

 

 

 

 

 

 

 

 

この絵は、後期高齢者運転免許の更新時に記憶テストされる問題図です。 16個の名前が載ったこの絵を見せられた後30分後位に、何が有ったかの回答を求められます。

これで9月の免許更新試験は大丈夫でしょう!

Python別館
うるう年を計算する ③

先にカレンダー作成をしましたが、来年はオリンピックの年でまた閏年でもあります。閏年とは、・西暦が4で …

Python別館
カレンダーを作る ②

復習を兼ねてカレンダーを作ってみましょう。試しに原始的な方法で来月(8月)のカレンダーを作ります。単 …

Python別館
EV計算機を作る 完成 ⑤

被写体の明るさ(EV)計算機を作る④の続きやっと完成しました。巷には沢山同種のアプリがありますが、今 …