Pythonをpyinstallerでパッケージ化してEXEとして配布できるようにするときのメモ

スポンサーリンク

色々と引っかかるところが多かったので自分用に簡単にメモしておく。

スポンサーリンク

やり方

・Pythonと関連パッケージをインストールする。
パッケージインストールには以下を参考に、「Build Tools for Visual Studio」をインストールする必要がある。

Download Visual Studio Tools - Install Free for Windows, Mac, Linux
Download Visual Studio IDE or VS Code for free. Try out Visual Studio Professional or Enterprise editions on Windows, Ma...
「pip install」で「error: Microsoft Visual C++ 14.0」が出てインストールできない
WindowsでPythonのpipでインストールできない事象が発生。 「pip install ccxt」としたところ以下のエラー。 ほかのパッケージでも同様。 ・エラー Running setup.py install for pyca...

 

https://githubja.com/pyinstaller/pyinstaller

 

・pyinstallerでexe化する

【Python】【Flask】オブジェクトでテスト環境と本番環境の設定を分けるMAX999blog
オブジェクトを使ってローカル環境、テスト環境、本番環境等の設定を使い分ける方法。 環境の設定方法としては、設定ファイルを読み込む方法もある。 1#設定ファイルを読み込む方法 2app.config.from_pyfile("設定ファイル名"
https://githubja.com/pyinstaller/pyinstaller
【Python】ファイルをexe化する方法【pyinstaller】 – DUKADUKA

 

以下のように「onefile」オプションをつけて作成しないと単独で実行できるようにならない。
pyinstaller sample.py –onefile

・Configファイルが必要な場合は、以下を参照に設定するか、
スクリプト中で読み込ませる。

【ファイル参照】pyinstaller configファイルの読み込み|システムブック
pyinstaller configファイルの読み込み pyinstallerは基本的に設定しない限り外部ファイルを読み

 

しかし、起動した場合はユーザのデフォルトパスがカレントディレクトリになるので注意
以下を参考に、カレントディレクトリをスクリプト中で移動しておくことも必要。

Pythonでカレントディレクトリを取得、変更(移動) | note.nkmk.me
Pythonが実行されている作業ディレクトリ(カレントディレクトリ)を取得し確認、変更(移動)するには、os.getcwd()とos.chdir()を使う。 osモジュールは標準ライブラリに含まれているので追加のインストールは必要 ...
Pythonで実行中のファイルの場所(パス)を取得する__file__ | note.nkmk.me
Pythonで実行中のスクリプトファイル.pyの場所(パス)を取得するには__file__を使う。実行中のファイルの場所を基準にほかのファイルを読み込んだりする場合に便利。 Python3.8までは、__file__で得られるのは実行 .....
[Python] スクリプト実行ディレクトリを絶対パスで取得する - Qiita
ずばり、以下で取得可能。os.path.dirname(os.path.abspath(__file__))動作確認用のテストコードimport osprint("__file__ : %r…

例:
os.chdir(os.path.dirname(os.path.abspath(file)))

しかしこれはEXEでは動かず。
https://qiita.com/q_masa/items/93872744f63ed97a54d8
とのこと。

結局Batでカレントディレクトリを移動して、それ経由で起動してやるしかない。

ちょっと取り扱いに注意が必要だと感じた。

2022/07/03追記
auto-py-to-exeというpyinstallerをGUI化したソフトも出ているそうです。
こちらのほうが簡単そうなので、
次回以降はこちらを使ってみようと思います。
https://qiita.com/osorezugoing/items/4ea5249c43c0ba8b89aa

 

スポンサーリンク
Python技術的なこと
Heywaをフォローする

コメント

タイトルとURLをコピーしました