Basic Build Process
The executable is called
python.exe on macOS case-insensitive file systems and Cygwin; elsewhere it’s just python.Development Builds
Debug Build
For development work, use a debug build with additional checks:- Enables assertions and extra debugging code
- Includes reference count tracking
- Adds memory debugging features
- Makes debugging with gdb easier
Out-of-Tree Build
To keep your source directory clean, use an out-of-tree build:Build Options
Optimized Build
For performance testing or benchmarking:- Profile Guided Optimization (PGO): Optimizes based on runtime profiling
- Link Time Optimization (LTO): Cross-module optimization (on supported platforms)
Optimized builds take significantly longer due to the profiling step. Use them only when performance matters.
Common Configure Options
Profile Guided Optimization (PGO)
When you use--enable-optimizations or run make profile-opt, the build process:
Run training workload
Executes the test suite to collect profiling data. Output is suppressed during this step.
Platform-Specific Builds
macOS Framework Build
macOS has special framework build options:- Framework builds
- Universal builds
- Code signing requirements
Windows
Windows uses a different build system:- Visual Studio requirements
- Build configurations
- Creating Windows installers
Build Targets
Parallel Builds
Speed up compilation with parallel jobs:Installing Multiple Versions
To install multiple Python versions using the same prefix:make altinstall prevents overwriting the python3 symlink.
Troubleshooting
Build fails with missing dependencies
Build fails with missing dependencies
Some standard library modules require external libraries. The build will succeed but those modules will be unavailable. Check:Install missing dependencies and rebuild.
make test fails on optional modules
make test fails on optional modules
Messages about skipped tests for optional features are normal:Only worry about actual failures or tracebacks.
Stale build artifacts
Stale build artifacts
If you’re seeing weird behavior:
Permission errors during install
Permission errors during install
For system-wide installation:For development, consider installing to a user directory:
Verifying Your Build
After building, verify it works:Next Steps
Additional Resources
- CPython Developer Guide
- Special Build Types (Misc/SpecialBuilds.txt)
- GitHub Actions CI
- Azure Pipelines CI
