# -*- coding: utf-8 -*- """ Main entry point script for the PyInstaller GUI Wrapper application. This script imports the main GUI class and starts the Tkinter event loop. Run this file to launch the application. """ import sys import os import traceback # Import traceback for better error reporting # --- Crucial: Add the directory containing the modules to sys.path --- # This allows Python to find 'gui.py', 'config.py', etc. when run directly. script_dir = os.path.dirname(os.path.abspath(__file__)) print(f"Adding to sys.path: {script_dir}") # Debug print if script_dir not in sys.path: sys.path.insert(0, script_dir) # --- Import the necessary modules --- # Use direct imports now that the path is set try: # Import the main GUI class directly by name from gui import PyInstallerGUI # We might need other modules here later if needed at top level # import config # import builder # import spec_parser except ImportError as e: print(f"ERROR: Could not import required modules.") print(f"ImportError: {e}") print(f"Current sys.path: {sys.path}") traceback.print_exc() # Print detailed traceback sys.exit(1) except Exception as e: print(f"ERROR: An unexpected error occurred during initial imports: {e}") traceback.print_exc() sys.exit(1) def main(): """ Initializes and runs the PyInstaller GUI application. """ try: app = PyInstallerGUI() app.mainloop() except Exception as e: print(f"FATAL ERROR: An unexpected error occurred during application execution: {e}") traceback.print_exc() try: # Attempt to show a Tkinter error box if possible import tkinter as tk from tkinter import messagebox root = tk.Tk() root.withdraw() messagebox.showerror("Fatal Error", f"Application failed to run:\n{e}\n\nSee console for details.") root.destroy() except Exception: pass # Ignore if Tkinter fails here too sys.exit(1) # --- Main Execution Guard --- if __name__ == "__main__": # Check Python version if needed (Tkinter themes benefit from newer versions) # print(f"Running with Python {sys.version}") main()