目次
何故exeファイルにしたいのか
pythonファイルは実行するPCにpythonやその他モジュールがinstallされている必要があるため。
ツール等作成したものを配布する時に、都度利用者にpython等のinstallさせるのは気が引ける。
そこでexeファイルにすることでpythonの有無を問わず、実行できるようになる。
pyinstallerのインストール
pip install pyinstaller
これだけ。
使い方
基本
vscodeの場合はターミナルで以下
pyinstaller xxx.py
xxx.py はexeにしたいpythonファイル
オプション
使用したものだけ記載する。
- --onefile ファイルをexeファイル1つにまとめる
- --noconsole GUIアプリなどでexeを実行したときにコンソール画面を表示しない
※seleniumを使用しているpyファイルは「--onefile」を使用するとexe化自体は終了したがexeを起動すると、コマンドプロンプトの画面だけが開きすぐに閉じるような動作をしたため、使えなさそう。
例
pyinstaller xxx.py --onefile --noconsole
不具合
pyinstallerを使用した時に起きたエラーをメモ程度で残す。
以下の事象はexe化自体は正常終了したが、出力されたexe起動時に起きたもの
ModuleNotFoundError
ModuleNotFoundError: No module named 'numpy.random.common'が発生した。
解決策
importに以下を追加
import numpy.random.common
import numpy.random.bounded_integers
import numpy.random.entropy
参考:ModuleNotFoundError: No module named 'numpy.random.common'
ModuleNotFoundError その2
ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
解決策
① 対象となる.pyファイルをpyInstallerでexe化する。
ex) pyinstaller main.py
② dictフォルダと同階層に.specファイルができているはず
③ .specファイルをテキストエディタで開き、「heddenimports」を下記のように編集して保存する
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\UserName\\xxxx'],
binaries=[],
datas=[],
hiddenimports=['pkg_resources.py2_warn'], # ←このように編集
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
④ .specファイルをpyInstallerでexe化する
ex) pyinstaller main.spec
設定ファイルがない類のエラー
configpaserを使用して.iniファイルをソース内で読み込んでいるが
そのiniファイル自体が無い趣旨のエラー出力していた。
原因
pyinstallerの出力先のフォルダには外部ファイルは含まれないらしい。
ソースでは.pyファイルと同階層に設定ファイルもある体でコーディングしていたので
ファイル自体が無いエラーが出力された。
解決策
設定ファイルをexeと同階層にコピペ
まとめ
以上、pyinstallerを使用した目的と簡単な実行方法
起きた事象をメモ程度にまとめました。
単純作業にお悩みではありませんか?
何百とあるワードを検索してファイルにまとめたり 数ある商品情報から条件にあるものだけ目で探してリ...
その単純作業プログラムで解決できるかもしれません。 もしよろしければ単純作業からの解放をお手伝いさせてください。
詳しくは以下のページからDM、または見積もり相談お願い致します。