Open Storefront is a single Python script, which means anyone who wants to run it normally needs Python installed. By using PyInstaller you can bundle the script and all its dependencies into one self-contained executable that runs on Windows, macOS, or Linux with no Python installation required — making it much easier to distribute to end users.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/drake-rochelle/open-storefront/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
You need Python 3 and PyInstaller on the machine where you build the executable. The target machines that run the finished binary do not need Python at all.Build Steps
Build the executable
From the directory containing PyInstaller will analyse the script, collect dependencies, and produce a single bundled executable.
main.py, run:No custom
.spec file is needed. The standard pyinstaller --onefile main.py command is sufficient — Open Storefront has no special bundling requirements beyond what PyInstaller handles automatically.Find the output binary
After the build completes, the executable is placed in the
You can rename and distribute this file freely.
dist/ subdirectory:| Platform | Output path |
|---|---|
| Linux / macOS | dist/main |
| Windows | dist/main.exe |
Copy config files next to the binary
The executable looks for configuration files in the directory from which it is run. Copy any config files you want to ship alongside the binary:Neither file is required — the client runs without them using built-in defaults — but if you want to pre-configure a custom download path or a custom home storefront, the files must be present in the working directory when the binary is launched.
How It Works
When Python runs inside a PyInstaller bundle, the attributesys.frozen is set to True. Open Storefront checks for this at startup:
SCRIPT_DIR resolves to the folder containing the executable rather than the original source file. The download_path.txt config file is looked up relative to SCRIPT_DIR, so it is found correctly regardless of where the user runs the binary from. Other files (home.3sf, input, and storefront.json) are opened using bare filenames, so they are resolved relative to the current working directory at runtime.
Config File Placement After Building
Once you have built and moved the binary out of thedist/ folder, keep config files co-located with it and run the binary from that same directory: