Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menentukan Laluan Aplikasi dalam Python EXEs Dijana oleh pyInstaller?

Bagaimana untuk Menentukan Laluan Aplikasi dalam Python EXEs Dijana oleh pyInstaller?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 13:45:02908semak imbas

How to Determine Application Path in Python EXEs Generated by pyInstaller?

Menentukan Laluan Aplikasi dalam Python EXE Dijana oleh pyInstaller

Apabila membina aplikasi Python sebagai EXE menggunakan pyInstaller, ia menjadi perlu untuk mencari fail tertentu secara relatif ke laluan aplikasi. Untuk aplikasi yang memerlukan fail konfigurasi bersebelahan dengan boleh laku, kaedah konvensional menggunakan sys.path[0] gagal dalam senario EXE.

Untuk menangani isu ini, pendekatan yang lebih dipercayai digunakan:

import os
import sys

config_name = 'myapp.cfg'

# Check if the application is a script or a 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)

Fungsi getattr() digunakan untuk menentukan sama ada atribut 'beku' ditakrifkan dalam sys, menunjukkan konteks EXE. Jika ya, laluan aplikasi ditetapkan kepada direktori yang mengandungi EXE boleh laku. Jika tidak, ia akan kembali menggunakan atribut __file__ modul Python yang sedang berjalan.

Dengan menggabungkan pendekatan ini, aplikasi boleh mendapatkan semula laluan semasa mereka secara konsisten, tidak kira sama ada ia dilaksanakan sebagai skrip atau ditukar kepada pyInstaller EXE. Ini memastikan bahawa fail konfigurasi dan sumber lain yang berkaitan sentiasa boleh diakses, walaupun dalam persekitaran EXE.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Laluan Aplikasi dalam Python EXEs Dijana oleh pyInstaller?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn