These steps build a native .app bundle using Python 3 + PyInstaller and compile the bundled Swiss Ephemeris wrapper (sweastrology) for your Python.
The macOS build script uses isolated per-architecture virtualenvs in .build-venvs/ so arm64, x86_64, and universal builds do not overwrite each other's packages or your shared Python install.
Choose an architecture when you build:
./scripts/build_macos_app.sh x86_64
./scripts/build_macos_app.sh arm64
./scripts/build_macos_app.sh universalDefaults:
x86_64usesMACOSX_DEPLOYMENT_TARGET=10.13arm64usesMACOSX_DEPLOYMENT_TARGET=11.0universaluses both slices and defaults toMACOSX_DEPLOYMENT_TARGET=11.0
You can still override MACOSX_DEPLOYMENT_TARGET in the environment if you need a different minimum version.
- Xcode Command Line Tools (
clang) - Python 3.10+ (this repo currently builds with Python 3.13)
python3 -m pip install --user -U pip
python3 -m pip install --user -r requirements-dev.txtOptional (offline timezone + small numeric helpers):
python3 -m pip install --user -r requirements-optional.txtcd "SWEP/src"
python3 setup.py build_ext --inplaceThis should create a file like sweastrology.cpython-313-darwin.so in SWEP/src/.
cd "../.."
python3 morinus.pypython3 -m PyInstaller Morinus.macos.spec --clean -yOutput ends up in an arch-specific bundle:
dist/Morinus-x86_64.appdist/Morinus-arm64.appdist/Morinus-universal.app
./scripts/build_macos_app.shTo build both shipping bundles in one pass:
./scripts/build_macos_release.shor:
make macos-releasePer-arch build environments are created automatically on first use:
.build-venvs/macos-arm64.build-venvs/macos-x86_64.build-venvs/macos-universal