A powerful GUI wrapper for PyInstaller — convert your Python scripts into standalone executables for Windows, macOS, and Linux with ease.
- Cross-platform support: Convert your Python scripts into executables for Windows, macOS, and Linux
- Easy-to-use GUI: No need to remember complex command-line arguments; a simple and intuitive interface
- Dark & Light Themes: Automatic system theme detection with manual override options
- Drag & Drop Support: Simply drag and drop your Python script into the application
- Recent Files: Quickly access recently used scripts from the dropdown menu
- Configuration Management: Export and import build configurations as JSON files for reuse and sharing
- Syntax Highlighting: Command preview with color-coded syntax highlighting for better readability
- Search & Filter: Search and filter additional files in the file tree
- Edit Files: Edit file paths directly or double-click to modify
- Copy & Save Logs: Copy generated commands or save build logs to files
- Customizable settings: Fine-tune various PyInstaller options like adding extra files, hidden imports, and more
- Real-time logging: View everything happening during the conversion process with detailed logs
You can install PyInstaller GUI via pip:
pip install --upgrade pyinstaller-guiOr, if you prefer to clone the repository directly:
git clone https://github.com/inject3r/pyinstaller-gui.git
cd pyinstaller-gui
pip install -e .To start the PyInstaller GUI, simply run the following command:
pyinstaller-guiOr:
pyinstallergui- Open the PyInstaller GUI application
- Load your Python script by:
- Clicking the Browse button
- Dragging and dropping a
.pyfile into the script field - Selecting from Recent files dropdown
- Configure your build options across the tabs:
- General: Basic options (OneFile, No Console, Hidden Imports)
- Additional Files: Add files, folders, or binaries to bundle
- Advanced: Log level, UPX compression, debug mode
- Settings: Output folder, custom icon, runtime tmpdir
- Config: Export/Import build configurations
- Click Run PyInstaller to generate the executable
- Export Configuration: Save your current settings as a JSON file
- Import Configuration: Load previously saved settings
- Preview: View a human-readable summary of your current configuration
- Double-click any file in the Additional Files list to edit its path
- Use the Search box to filter files in the Additional Files tab
- Copy button copies the generated command to clipboard
- Save Log saves the build output to a file with timestamp
- Clear button clears the output console
| Feature | Description |
|---|---|
| OneFile (-F) | Create a single executable file instead of a folder |
| No Console (-w) | Hide the console window (GUI applications) |
| Hidden Imports | Specify modules that are imported dynamically |
| Additional Files | Include files, folders, or binaries to bundle |
| Icon | Choose a custom icon (.ico for Windows, .icns for macOS) |
| Output Folder | Define where the executable will be saved |
| UPX Directory | Path to UPX for executable compression |
| Log Level | Control build output verbosity (TRACE, DEBUG, INFO, WARN, ERROR, FATAL) |
| Debug Mode | Enable debug features (all, imports, bootloader, noarchive) |
| Runtime Tmpdir | Custom temporary directory for onefile mode |
| Clean Cache | Clear PyInstaller cache before building |
| Custom Commands | Add any additional PyInstaller arguments |
Note: To generate the executable for a specific operating system, you must run this module on that system. For example, to create a Windows executable, you need to run the module on a Windows machine.
- Python 3.6+
- PyInstaller 6.11.1+
- PyQt6 6.8.1+
- Windows: Create .exe files for Windows
- macOS: Generate .app bundles for macOS
- Linux: Create executables for Linux
# Run all tests with coverage
./scripts/tests.sh
# Clean test output files
./scripts/test_clean.sh
# Run a single test file
python -m pytest tests/test_command_builder.py -v# Install in development mode
pip install -e .
# Install with dev dependencies
pip install -e ".[dev]"
# Build distribution
python -m build
# Build executable with PyInstaller
pyinstaller pyinstaller-gui.specAfter running ./scripts/tests.sh, open the coverage report:
# Open HTML coverage report
firefox tests/coverage_html/index.html
# or
google-chrome tests/coverage_html/index.html| Issue | Solution |
|---|---|
| PyInstaller not found | Install with pip install pyinstaller |
| Module not found errors | Add missing modules to Hidden Imports |
| Icon not showing | Ensure icon format is correct (.ico for Windows, .icns for macOS) |
| Permission denied on Linux | Run chmod +x dist/your_app |
| Command preview shows error | Check if script path is valid and file exists |
| Build fails with no console | GUI applications need --windowed flag (already set by No Console option) |
- Check the built-in help dialogs (click the ? button in each tab)
- View the command preview before building to verify arguments
- Check the output console for detailed error messages
- Visit the GitHub Issues page
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 style guidelines
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
- PyInstaller - The core packaging tool
- PyQt6 - GUI framework
- UPX - Executable compressor
- All contributors and users of this project

