Packaging Python Applications as Standalone Binaries with PyInstaller

Packaging Python Applications as Standalone Binaries with PyInstaller

An expert guide by myTech.Today, your Barrington, IL MSP

PyInstaller transforms your Python scripts into self-contained executables for macOS, Linux, and Windows—no end-user installs required. At myTech.Today, we leverage PyInstaller to streamline cross-platform distribution of your business-critical tools.

Here’s a battle-tested recipe for packaging the Datasette project:

export DATASETTE_BASE=$(python -c 'import os; print(os.path.dirname(__import__("datasette").__file__))') \
pyinstaller -F \
    --add-data "$DATASETTE_BASE/templates:datasette/templates" \
    --add-data "$DATASETTE_BASE/static:datasette/static" \
    --hidden-import datasette.publish \
    --hidden-import datasette.publish.heroku \
    --hidden-import datasette.publish.cloudrun \
    --hidden-import datasette.facets \
    --hidden-import datasette.sql_functions \
    --hidden-import datasette.actor_auth_cookie \
    --hidden-import datasette.default_permissions \
    --hidden-import datasette.default_magic_parameters \
    --hidden-import datasette.blob_renderer \
    --hidden-import datasette.default_menu_links \
    --hidden-import uvicorn \
    --hidden-import uvicorn.logging \
    --hidden-import uvicorn.loops \
    --hidden-import uvicorn.loops.auto \
    --hidden-import uvicorn.protocols \
    --hidden-import uvicorn.protocols.http \
    --hidden-import uvicorn.protocols.http.auto \
    --hidden-import uvicorn.protocols.websockets \
    --hidden-import uvicorn.protocols.websockets.auto \
    --hidden-import uvicorn.lifespan \
    --hidden-import uvicorn.lifespan.on \
    $(which datasette)

PyInstaller follows your imports automatically, but dynamic plugins (like Datasette’s) and certain uvicorn modules require explicit --hidden-import flags. If you see ModuleNotFoundError at runtime, simply add the missing module to your build command.

Why choose myTech.Today?

  • Tailored PyInstaller configurations for any Python app
  • Automated CI/CD pipelines that build and test your executables
  • Hands-on cross-platform validation on macOS, Linux, and Windows
  • Rapid troubleshooting of hidden imports and runtime errors
  • Ongoing maintenance, updates, and expert consulting

From internal data utilities to commercial software, myTech.Today ensures your Python applications are packaged professionally—so you can focus on innovation, not deployment headaches.

Packaging Python Applications as Standalone Binaries with PyInstaller

Packaging Python Applications as Standalone Binaries with PyInstaller

Packaging Python Applications as Standalone Binaries with PyInstaller

Packaging Python Applications as Standalone Binaries with PyInstaller
Packaging Python Applications as Standalone Binaries with PyInstaller