Skip to content

Supported Platforms

Complete matrix of supported operating systems, architectures, Python versions, and packaging formats.


Operating Systems & Architectures

Platform ID OS Architecture Status
win-x64 Windows 10/11 x86_64 Full support
linux-x64 Linux (glibc 2.17+) x86_64 Full support
linux-arm64 Linux (glibc 2.17+) aarch64 Full support
mac-x64 macOS 11+ x86_64 (Intel) Full support
mac-arm64 macOS 11+ Apple Silicon (M1/M2/M3/M4) Full support

Linux Distribution Compatibility

The native runtime is built against glibc 2.17, which means it runs on:

Distribution Minimum Version
Ubuntu 18.04 LTS
Debian 10 (Buster)
CentOS / RHEL 7
Fedora 28
Amazon Linux 2
Alpine Not supported (uses musl, not glibc)

Note: Alpine Linux is not supported because it uses musl instead of glibc. If you need Alpine support, build your application in a glibc-based container.

Windows Compatibility

Version Status
Windows 11 Full support
Windows 10 Full support
Windows Server 2019+ Full support
Windows 8.1 and earlier Not supported

macOS Compatibility

Version Status
macOS 15 (Sequoia) Full support
macOS 14 (Sonoma) Full support
macOS 13 (Ventura) Full support
macOS 12 (Monterey) Full support
macOS 11 (Big Sur) Full support
macOS 10.15 and earlier Not supported

Python Versions

Version Status Notes
Python 3.13 Full support Latest stable
Python 3.12 Full support Recommended
Python 3.11 Full support
Python 3.10 Full support
Python 3.9 Full support Minimum supported
Python 3.8 and earlier Not supported

Important: The --python flag in pylocket protect must match the Python version used to build the artifact. Bytecode is version-specific — a mismatch will cause decryption failures at runtime.


Packaging Formats

Format Tool Artifact Type Accepted Extensions
PyInstaller onefile pyinstaller --onefile Standalone executable .exe (Windows), binary (macOS/Linux)
PyInstaller onedir pyinstaller --onedir Zipped directory .zip
cx_Freeze cxfreeze Zipped directory .zip
BeeWare Briefcase (macOS) briefcase macOS app bundle .app
BeeWare Briefcase (other) briefcase Zipped directory .zip
Python Wheel python -m build Wheel package .whl
Python Egg setup.py bdist_egg Egg package .egg
Generic ZIP Any Python project .zip
Tar archives Compressed archive .tar.gz, .tgz, .tar.bz2

Recommended for end-user distribution

Use executables (.exe on Windows, .app on macOS) when distributing to end users who may not have Python installed. These produce standalone applications.

Accepted File Extensions (Complete Allow-List)

Extension Description Auto-Detected Platform End User Needs Python?
.exe Windows executable Windows No
.app macOS app bundle macOS No
.zip ZIP archive Cross-platform Depends on contents
.tar.gz / .tgz / .tar.bz2 Tar archive Cross-platform Depends on contents
.whl Python wheel Cross-platform Yes
.egg Python egg Cross-platform Yes
.py Python script Cross-platform Yes
.pyz Python zipapp Cross-platform Yes
.pyw Python windowless script Windows Yes

Files with extensions not in this list are rejected on upload with a clear error message.

Raw Python files (.py, .pyz, .pyw)

Raw Python scripts are supported but are a niche use case. Protected .py output is a repacked ZIP archive (not a standalone script) that requires Python on the end user's machine plus a valid license key. See Protecting Raw Python Scripts for the full workflow and limitations.

Format-Specific Notes

PyInstaller --onefile: Upload the single executable directly (.exe on Windows, the binary on macOS/Linux). This is the recommended approach for distributing to end users.

PyInstaller --onedir: Compress the output directory into a .zip before uploading.

cx_Freeze: Always produces a directory. Compress to .zip before uploading.

Briefcase (macOS): Upload the .app bundle directly. On other platforms, compress the output directory to .zip.

Wheels: Upload the .whl file directly. The protected wheel can be installed with pip. Requires Python on the end user's machine.


Native Runtime Files

The platform-specific native runtime is bundled automatically during protection:

Platform Runtime File Format
Windows x64 _pylocket_rt.pyd Windows DLL
Linux x64 _pylocket_rt.so ELF shared object
Linux ARM64 _pylocket_rt.so ELF shared object
macOS x64 _pylocket_rt.so Mach-O shared library
macOS ARM64 _pylocket_rt.so Mach-O shared library

Compatibility Matrix

Full cross-reference of platforms, Python versions, and packaging formats:

PyInstaller cx_Freeze Briefcase Wheel ZIP
win-x64 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13
linux-x64 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13
linux-arm64 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13
mac-x64 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13
mac-arm64 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13 3.9-3.13

All combinations are fully supported.


See Also