このジレンマを想像してみてください。PyInstaller を使用して EXE にバンドルされた Python アプリケーションをコーディングしているのですが、ディレクトリ内の .cfg ファイルに依存します。残念ながら、sys.path[0] を使用してパスを構築する通常の方法は、EXE では失敗します。アプリケーションのパスを確実に決定するための回避策はありますか?
それでは、素晴らしい解決策を紹介します:
import os import sys config_name = 'myapp.cfg' # First, we check if the application is running as a script or as an EXE: if getattr(sys, 'frozen', False): # If frozen as an EXE, we extract the path from sys.executable: application_path = os.path.dirname(sys.executable) else: # If it's a script file (i.e., not frozen as an EXE), we use __file__: application_path = os.path.dirname(__file__) # Finally, we join the path and the config file name to create the complete path: config_path = os.path.join(application_path, config_name)
この巧妙なトリックは、Python の file 属性を利用します。スクリプトとして実行するときに定義され、sys モジュールの「frozen」属性は、アプリケーションがスクリプトとしてフリーズされているかどうかを示します。 EXE。両方のシナリオを適切に処理し、EXE 環境でも構成ファイルを見つけるための堅牢なソリューションを提供します。
以上がPyInstaller で生成された EXE でアプリケーション パスを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。