[解決済み] pyInstallerで生成されたPython EXEでアプリケーションのパスを決定する
2023-02-28 15:10:59
質問
私は1つの.pyファイルに存在するアプリケーションを持っています。 pyInstallerがそれをWindows用のEXEにうまくバンドルするようにすることができました。 問題は、そのアプリケーションが、常に同じディレクトリのアプリケーションのすぐそばにある.cfgファイルを必要とすることです。
通常、私は以下のコードを使用してパスを構築します。
import os
config_name = 'myapp.cfg'
config_path = os.path.join(sys.path[0], config_name)
しかし、pyInstallerによって生成されたEXEから呼び出された場合、sys.pathは空白になっているようです。 この同じ挙動は、pythonの対話型コマンドラインを実行してsys.path[0]を取得しようとしたときにも発生します。
現在実行中のアプリケーションのパスを取得し、それに相対するファイルを見つけることができるような、より具体的な方法はありますか?
どのように解決するのですか?
解決策を見つけました。 アプリケーションがスクリプトとして実行されているか、フリーズした exe として実行されているかを確認する必要があります。
import os
import sys
config_name = 'myapp.cfg'
# determine if application is a script file or 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)
関連
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み] Pythonでファイルの絶対パスを取得する方法
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?