【python】exeにすると動かない

【python】exeにすると動かない

 pythonで作成したプログラムを開発環境のない方に使っていただくときにexe化してしまいたい時があると思います。pyinstallerでexe化することは可能ですがうまく動かない?そんな時は”__file__”の表記に注意してみてください。今回はパス指定を例にして、pyinstallerでexe化した後の実行結果を比較してみます。test1.pyでは意図しないファイルパスが表示されます。
 
 ※python上で動かすときに問題がなくてもexe化の際に問題が発生します。本問題により筆者はpath指定方法の見直しを実施中です。

サンプルプログラム

【test1.py】

import sys
from os import path
test_path = path.join(path.dirname(__file__),"ファイル名")
print(test_path)

##実行画面を残すため##
x=input()
######################

【test2.pyt】

import sys
from os import path
test_path = path.join(path.dirname((sys.argv[0])),"ファイル名")
print(test_path)

##実行画面を残すため##
x=input()
######################

【pyinstallerでexe化した後の実行結果】

解説

 test1.pyもtest2.pyもpythonで実行した場合、実行したプログラムが保存されているフォルダ+ファイル名が表示されます(ここでは表示していません)が、exe化された後は同じフォルダに置いて実行しても実行結果が異なります。そのため、path指定で(__file__)を使っていると意図しているpathと異なる場所を指定するためexeがうまく動かないことになります。