Pythonスクリプトをexe化する際には、スクリプトの実行パスを正確に取得することが重要です。通常、Pythonスクリプトでスクリプトの実行パスを取得する場合は、sysモジュールを使って以下のようにします。

import os
base_path = os.path.dirname(__file__)

ここで__file__は実行されたスクリプトのフルパスを保持しています。しかし、.pyではなく、.exeファイルを実行する場合には、少し違った実行結果となって問題が発生することがあります。

exe化したアプリケーションを実行すると、まずスクリプトの実体をTemporaryフォルダにコピーした後に、スクリプトを実行する、という動きになります。そのため、実行している場所がexeが置いてあるパスと異なるため、もしexeファイルを配置したファイルを相対パスでファイルなどで操作しようとすると、「Not found」でエラーになってしまいます。

この問題を解決するためには、exeファイルを実行したパスを取りたい場合には、次のように取得を行うことで対処することができます。

import sys
import os

path_current_dir = os.path.dirname(sys.argv[0])

ここでsys.argv[0]には、実行ファイルまでのフルパスが入っているので__file__と同じように使うことができます。

以上がPythonスクリプトをexe化する際の絶対パスの取得方法についての説明です。この知識を持っておくことで、exe化するスクリプトについてはあらかじめ知っているとエラーにハマることを回避できるかと思います。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です