165 lines
4.6 KiB
Markdown
165 lines
4.6 KiB
Markdown
# 🏗️ Build Guide - Creating Executable Files
|
|
|
|
This guide explains how to compile the EBoek.info Scraper into standalone executable files for distribution.
|
|
|
|
## 📦 What You'll Get
|
|
|
|
- **Single executable file** (~30MB) containing everything needed
|
|
- **No Python installation required** on target machines
|
|
- **All dependencies bundled** (PyQt5, Selenium, etc.)
|
|
- **Cross-platform support** (Windows .exe, macOS app, Linux binary)
|
|
|
|
## 🚀 Quick Build
|
|
|
|
### Option 1: Python Build Script (Recommended)
|
|
```bash
|
|
# Cross-platform automated build
|
|
python3 build_executable.py
|
|
```
|
|
|
|
### Option 2: Platform-Specific Scripts
|
|
|
|
**Windows:**
|
|
```cmd
|
|
build_exe.bat
|
|
```
|
|
|
|
**macOS/Linux:**
|
|
```bash
|
|
./build_exe.sh
|
|
```
|
|
|
|
### Option 3: Manual PyInstaller
|
|
```bash
|
|
# Install PyInstaller
|
|
python3 -m pip install pyinstaller
|
|
|
|
# Build executable
|
|
python3 -m PyInstaller --onefile --windowed --name "EBoek_Scraper" gui_main.py
|
|
```
|
|
|
|
## 📋 Prerequisites
|
|
|
|
- **Python 3.8+** with all project dependencies installed
|
|
- **PyInstaller 6.0+** (auto-installed by build scripts)
|
|
- **All project requirements** (`pip install -r requirements.txt`)
|
|
|
|
## 🔧 Build Process Details
|
|
|
|
### What Happens During Build:
|
|
|
|
1. **Dependency Analysis** - PyInstaller scans all imports
|
|
2. **Code Compilation** - Python code compiled to bytecode
|
|
3. **Library Bundling** - All dependencies packaged together
|
|
4. **Executable Creation** - Single-file output with launcher
|
|
|
|
### Hidden Imports (Automatically Included):
|
|
- **PyQt5** modules (QtCore, QtGui, QtWidgets)
|
|
- **Selenium** webdriver components
|
|
- **Project modules** (core/, gui/, utils/)
|
|
|
|
### Excluded Modules (Size Optimization):
|
|
- tkinter, matplotlib, numpy, pandas (not needed)
|
|
|
|
## 📊 Build Results
|
|
|
|
| Platform | Executable | Size | Location |
|
|
|----------|------------|------|----------|
|
|
| **Windows** | `EBoek_Scraper.exe` | ~30MB | `dist/EBoek_Scraper.exe` |
|
|
| **macOS** | `EBoek_Scraper.app` | ~30MB | `dist/EBoek_Scraper.app` |
|
|
| **Linux** | `EBoek_Scraper` | ~30MB | `dist/EBoek_Scraper` |
|
|
|
|
### 💡 **Platform Notes:**
|
|
- **Windows**: PyInstaller automatically adds `.exe` extension when building on Windows
|
|
- **macOS**: Creates both `.app` bundle and Unix executable
|
|
- **Cross-compilation**: Build on target OS for best compatibility
|
|
|
|
## 🚀 Distribution
|
|
|
|
### What to Share:
|
|
- **Single file**: The executable from `dist/` folder
|
|
- **No additional files needed** - everything is bundled
|
|
|
|
### First Run Instructions:
|
|
|
|
**Windows Users:**
|
|
1. Run `EBoek_Scraper.exe`
|
|
2. If Windows shows security warning:
|
|
- Click "More Info"
|
|
- Click "Run Anyway"
|
|
3. This only happens on first run
|
|
|
|
**macOS Users:**
|
|
1. Run `EBoek_Scraper.app` or `EBoek_Scraper`
|
|
2. If macOS shows security warning:
|
|
- Right-click the file
|
|
- Select "Open"
|
|
- Click "Open" in dialog
|
|
3. This only happens on first run
|
|
|
|
**Linux Users:**
|
|
1. Make executable: `chmod +x EBoek_Scraper`
|
|
2. Run: `./EBoek_Scraper`
|
|
|
|
## 🛠️ Advanced Build Options
|
|
|
|
### Custom Spec File Build:
|
|
```bash
|
|
# Use custom spec file for advanced configuration
|
|
python3 -m PyInstaller eboek_scraper.spec
|
|
```
|
|
|
|
### Debug Build:
|
|
```bash
|
|
# Build with console window for debugging
|
|
python3 -m PyInstaller --onefile --console gui_main.py
|
|
```
|
|
|
|
### Directory Build (Faster startup):
|
|
```bash
|
|
# Build as directory instead of single file
|
|
python3 -m PyInstaller --onedir --windowed gui_main.py
|
|
```
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Build Fails:
|
|
1. **Check Python version**: Must be 3.8+
|
|
2. **Update PyInstaller**: `pip install --upgrade pyinstaller`
|
|
3. **Check dependencies**: `pip install -r requirements.txt`
|
|
4. **Try spec file**: `python3 -m PyInstaller eboek_scraper.spec`
|
|
|
|
### Executable Won't Run:
|
|
1. **Check Chrome installation** on target machine
|
|
2. **Antivirus interference** - add exception for scraper
|
|
3. **Missing Visual C++ Redistributable** (Windows only)
|
|
|
|
### Large File Size:
|
|
1. **Expected behavior** - includes Python + PyQt5 + Selenium
|
|
2. **Alternative**: Use `--onedir` for faster startup
|
|
3. **Size breakdown**: Python(~15MB) + PyQt5(~10MB) + Selenium(~5MB)
|
|
|
|
## 📈 Performance Notes
|
|
|
|
- **Startup time**: 2-3 seconds (cold start)
|
|
- **Memory usage**: Similar to Python version
|
|
- **Chrome requirement**: Still needs Chrome browser installed
|
|
- **No performance penalty** once running
|
|
|
|
## 🔄 Updating Builds
|
|
|
|
When you update the source code:
|
|
1. **Re-run build process** to create new executable
|
|
2. **Version number** - consider adding to filename
|
|
3. **Distribution** - replace old executable with new one
|
|
|
|
## 💡 Tips
|
|
|
|
- **Test executable** on clean system before distribution
|
|
- **Keep source code** - executable is not easily reverse-engineered
|
|
- **Build on target OS** - Windows builds work best on Windows, etc.
|
|
- **Sign executables** (optional) to reduce security warnings
|
|
|
|
---
|
|
|
|
**Happy building! 🚀** |