ホームページ >バックエンド開発 >Python チュートリアル >pyInstaller で生成された EXE 内のアプリケーション パスを取得するにはどうすればよいですか?

pyInstaller で生成された EXE 内のアプリケーション パスを取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-11 14:28:03354ブラウズ

How to Retrieve the Application Path in a pyInstaller-Generated EXE?

pyInstaller によって作成された Python EXE でのアプリケーション パスの取得

プログラミングの領域では、アプリケーションの実行コンテキストを理解することが重要です。特に、pyInstaller を使用して作成されたアプリケーションなど、バンドルされたアプリケーションを扱う場合はそうです。一般的な課題の 1 つは、アプリケーションがアプリケーションと並行して配置されている構成ファイルにアクセスする必要がある場合に発生します。この記事では、pyInstaller で生成された EXE 内のアプリケーションのパスを正確に取得することで、この問題を解決する手法を検討します。

従来の方法を使用してアプリケーションに隣接するファイルへのパスを構築する場合、以下のコード スニペットに示すように:

import os
config_name = 'myapp.cfg'
config_path = os.path.join(sys.path[0], config_name)

pyInstaller EXE のコンテキストではジレンマに遭遇します。通常、アプリケーションを含むディレクトリが含まれる sys.path リストは空です。これに対処するために、スクリプトと凍結された実行可能ファイルを区別する、より堅牢なアプローチを採用しています。

import os
import sys

config_name = 'myapp.cfg'

# Distinguish script file from frozen exe
if getattr(sys, 'frozen', False):
    application_path = os.path.dirname(sys.executable)
elif __file__:
    application_path = os.path.dirname(__file__)

config_path = os.path.join(application_path, config_name)

このコード内で、「sys」モジュールの「凍結」属性を検査します。 True の場合、アプリケーションは凍結された実行可能ファイルとして実行されていると推測され、そのパスは「sys.executable」から導出されます。逆に、file が存在する場合、アプリケーションはスクリプト モードで実行されており、そのパスは __file__ から派生すると結論付けられます。

このメソッドを使用すると、アプリケーションのパスの正常な取得が保証され、次のことが可能になります。重要な設定ファイルなどの相対ファイルへのアクセス。

以上がpyInstaller で生成された EXE 内のアプリケーション パスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。