|
| 1 | +<h1 align="center">PyInstaller Advanced Builder</h1> |
| 2 | + |
| 3 | +<p align="center"> |
| 4 | + A .py to .exe converter using a modern graphical interface and <a href="https://pyinstaller.org/">PyInstaller</a> in Python. |
| 5 | +</p> |
| 6 | + |
| 7 | +<p align="center"> |
| 8 | + <img src="imgs/main.png" alt="PyInstaller Advanced Builder" width="700"> |
| 9 | +</p> |
| 10 | + |
| 11 | +<p align="center"> |
| 12 | + <img src="https://img.shields.io/badge/python-3.8%20|%203.9%20|%203.10%20|%203.11%20|%203.12-blue" alt="Python Version"> |
| 13 | + <img src="https://img.shields.io/badge/license-MIT-green" alt="License"> |
| 14 | + <img src="https://img.shields.io/badge/platform-windows-lightgrey" alt="Platform"> |
| 15 | + <img src="https://img.shields.io/badge/PyQt5-5.15+-blueviolet" alt="PyQt5"> |
| 16 | + <img src="https://img.shields.io/badge/PyInstaller-6.0+-orange" alt="PyInstaller"> |
| 17 | +</p> |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +## Why This Tool? |
| 22 | + |
| 23 | +PyInstaller is powerful but the command-line workflow gets repetitive. This tool wraps it in a clean interface with: |
| 24 | + |
| 25 | +- Visual options instead of remembering flags |
| 26 | +- Real-time build output with error highlighting |
| 27 | +- Save/load build presets for different projects |
| 28 | +- Plugin system for custom post-build tasks |
| 29 | +- Dark and light themes |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## Quick Start |
| 34 | + |
| 35 | +```bash |
| 36 | +git clone https://github.com/AIMasterRace/PythonToEXE.git |
| 37 | +cd PythonToEXE |
| 38 | +pip install -r requirements.txt |
| 39 | +python run.py |
| 40 | +``` |
| 41 | + |
| 42 | +That's it. The window opens, you're ready to build. |
| 43 | + |
| 44 | +--- |
| 45 | + |
| 46 | +## Screenshots |
| 47 | + |
| 48 | +<details> |
| 49 | +<summary><b>Basic Settings</b> — Configure script, output, icon, build mode</summary> |
| 50 | +<br> |
| 51 | +<img src="imgs/main.png" alt="Main Tab" width="650"> |
| 52 | +</details> |
| 53 | + |
| 54 | +<details> |
| 55 | +<summary><b>Advanced Options</b> — Hidden imports, exclude modules, data files</summary> |
| 56 | +<br> |
| 57 | +<img src="imgs/advance_tab.png" alt="Advanced Tab" width="650"> |
| 58 | +</details> |
| 59 | + |
| 60 | +<details> |
| 61 | +<summary><b>Installer Setup</b> — NSIS / Inno Setup configuration</summary> |
| 62 | +<br> |
| 63 | +<img src="imgs/installer_tab.png" alt="Installer Tab" width="650"> |
| 64 | +</details> |
| 65 | + |
| 66 | +<details> |
| 67 | +<summary><b>Plugins</b> — Extend with custom post-build tasks</summary> |
| 68 | +<br> |
| 69 | +<img src="imgs/plugins_tab.png" alt="Plugins Tab" width="650"> |
| 70 | +</details> |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +## Features |
| 75 | + |
| 76 | +| Feature | Description | |
| 77 | +|---------|-------------| |
| 78 | +| One-File / One-Dir | Choose between single exe or folder output | |
| 79 | +| Console Toggle | Hide console window for GUI apps | |
| 80 | +| Icon Support | Custom `.ico` file for your executable | |
| 81 | +| Hidden Imports | Add modules PyInstaller misses | |
| 82 | +| Exclude Modules | Remove unwanted modules (reduce size) | |
| 83 | +| Data Files | Bundle assets, configs, etc. | |
| 84 | +| Clean Build | Auto-cleanup previous build cache | |
| 85 | +| Real-time Logs | Watch build progress live | |
| 86 | +| Presets | Save and load build configurations | |
| 87 | +| Themes | Dark and light mode | |
| 88 | +| Plugins | Run custom tasks after build | |
| 89 | + |
| 90 | +--- |
| 91 | + |
| 92 | +## Build Options Explained |
| 93 | + |
| 94 | +**One File** — Packs everything into a single `.exe`. Slower startup but easy to distribute. |
| 95 | + |
| 96 | +**One Directory** — Creates a folder with `.exe` + dependencies. Faster startup. |
| 97 | + |
| 98 | +**Console Window** — Keep checked for CLI apps. Uncheck for GUI apps (no black window). |
| 99 | + |
| 100 | +**Clean Build** — Removes old build cache. Recommended to avoid stale file issues. |
| 101 | + |
| 102 | +**Exclude Modules** — Comma-separated list. Example: `tkinter, unittest, pydoc` |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +## Keyboard Shortcuts |
| 107 | + |
| 108 | +| Key | Action | |
| 109 | +|-----|--------| |
| 110 | +| `F5` | Start Build | |
| 111 | +| `Ctrl+N` | New Project | |
| 112 | +| `Ctrl+O` | Open Script | |
| 113 | +| `Ctrl+S` | Save Preset | |
| 114 | +| `Ctrl+L` | Load Preset | |
| 115 | +| `Ctrl+T` | Toggle Theme | |
| 116 | +| `Ctrl+Shift+C` | Clear Logs | |
| 117 | + |
| 118 | +--- |
| 119 | + |
| 120 | +## Plugins |
| 121 | + |
| 122 | +The tool supports plugins for post-build automation. Two examples included: |
| 123 | + |
| 124 | +- **Zip Output** — Creates a `.zip` archive of the build |
| 125 | +- **Clean Build Artifacts** — Removes `.spec` and `build/` folder |
| 126 | + |
| 127 | +Want to create your own? **[See the Plugin Guide →](plugins/README.md)** |
| 128 | + |
| 129 | +--- |
| 130 | + |
| 131 | +## Project Structure |
| 132 | + |
| 133 | +``` |
| 134 | +PythonToEXE/ |
| 135 | +├── app/ |
| 136 | +│ ├── main.py # Entry point |
| 137 | +│ ├── core/ |
| 138 | +│ │ ├── builder.py # PyInstaller wrapper |
| 139 | +│ │ ├── config_manager.py # Settings persistence |
| 140 | +│ │ ├── logger.py # Log system |
| 141 | +│ │ ├── plugin_loader.py # Plugin loader |
| 142 | +│ │ └── venv_manager.py # Virtualenv support |
| 143 | +│ ├── utils/ # Helper modules |
| 144 | +│ └── windows/ # UI components |
| 145 | +├── plugins/ # Drop plugins here |
| 146 | +├── imgs/ # Screenshots |
| 147 | +├── requirements.txt |
| 148 | +└── run.py |
| 149 | +``` |
| 150 | + |
| 151 | +--- |
| 152 | + |
| 153 | +## Requirements |
| 154 | + |
| 155 | +- Python 3.8 or higher |
| 156 | +- PyQt5 |
| 157 | +- PyInstaller 6.0+ |
| 158 | + |
| 159 | +```bash |
| 160 | +pip install -r requirements.txt |
| 161 | +``` |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +## Configuration Storage |
| 166 | + |
| 167 | +Settings save automatically to: |
| 168 | + |
| 169 | +``` |
| 170 | +~/.pyinstaller_builder/ |
| 171 | +├── config.json # App settings |
| 172 | +└── presets/ # Saved build presets |
| 173 | +``` |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +## Roadmap |
| 178 | + |
| 179 | +- [ ] Multiple Python interpreter support |
| 180 | +- [ ] PyInstaller version selector |
| 181 | +- [ ] NSIS/Inno Setup full integration |
| 182 | +- [ ] Spec file editor |
| 183 | +- [ ] Dependency size analyzer |
| 184 | +- [ ] Build queue for batch processing |
| 185 | + |
| 186 | +--- |
| 187 | + |
| 188 | +## Contributing |
| 189 | + |
| 190 | +Found a bug? Have an idea? Open an issue or submit a PR. |
| 191 | + |
| 192 | +--- |
| 193 | + |
| 194 | +## License |
| 195 | + |
| 196 | +MIT License — use it, modify it, ship it. |
| 197 | + |
| 198 | +--- |
| 199 | + |
| 200 | +<p align="center"> |
| 201 | + Made with PyQt5 and PyInstaller |
| 202 | +</p> |
0 commit comments