こちらに記事が載っています。
pyinstallerで実行ファイル化すると、動作としてテンポラリフォルダ(_MEI*****というフォルダ)に解凍し、そこで実行する挙動になっています。
pyinstallerを使用して一つの実行ファイル化するときに、画像や設定等のファイルを参照する方法は2つあります。
実行ファイルがそれぞれ C:\python\
にあるとします。
- 実行ファイルと同じフォルダに置いて参照する
- ファイルを内蔵して参照する
1.実行ファイルと同じフォルダに置いて参照する場合
1 2 3 4 5 |
import sys import os get_path = os.path.dirname(sys.argv[0]) ※必要によって .replace("\\" ,"/") を追加 print("get_path=",get_path) #get_dir= C:\python |
2.ファイルを内蔵して参照する場合
実際はテンポラリフォルダ内を参照することになるので、そのパスを取得します。
1 2 3 4 5 |
import sys import os temp_path = os.path.dirname(os.path.abspath(__file__)) print("temp_path=",temp_path) #temp_path= C:\windows\temp\_MEI***** ※実行ファイル化した後での出力の結果です。パスはあくまで例です。 |
とりあえずこんな感じでできます。
コードを書く際、内蔵するか否か、最初に決めておかないといけないですね。
そういう意味では、最初の設計はやはり大事です。