Skip to content

Installation

The satkit package is hosted at https://github.com/ssmichael1/satkit/. The package is written natively in Rust, with Python bindings provided by the PyO3 Rust package.

PIP

Pre-built Python binary packages are provided by the PyPI package manager, and are the simplest to install. Binary packages are provided for Linux (x86_64 and aarch64), Windows (x86_64), and macOS on Apple silicon (arm64). Intel-based Macs are not shipped a wheel since 0.22: install from source with pip install --no-binary satkit satkit (needs a stable Rust toolchain) or via conda-forge, which builds osx-64. To install via PyPI:

python -m pip install satkit

That is the whole install (~10 MB). The core data — the IERS nutation tables and the gravity models to degree 70 — is compiled into the package, so frame transforms, gravity, SGP4, time scales, Keplerian propagation and Lambert targeting work immediately, with no data directory and no network.

Two things are fetched later, on demand, into the platform user-data directory (satkit.utils.datadir(), never inside site-packages):

  • The JPL ephemeris (DE440, 102 MB, SHA-256 verified), the first time it is needed — the first propagate() or satkit.jplephem query. The sun, moon and planets modules are analytic low-precision models and never load it.
  • Earth orientation and space weather, fetched on first use and refreshed by satkit.utils.update_datafiles(); they change daily, so re-run that periodically.

See Data Files for what each file is and Downloads and Refresh for where it comes from.

Offline and air-gapped use

Run satkit.utils.update_datafiles() once to provision everything up front (a Docker image, a CI job, a machine that will later be offline); the steps for copying the result to an air-gapped machine are in Provisioning up front. The environment variables that control the data directory, mirrors, offline mode and TLS (SATKIT_DATA, SATKIT_DATA_URL, SATKIT_OFFLINE, SATKIT_CA_BUNDLE, …) are listed in Data Directories, with the full search order per platform.

Conda

The same package is on conda-forge, built from the PyPI source distribution by conda-forge/satkit-feedstock:

conda install -c conda-forge satkit

It behaves exactly like the wheel: the core data is compiled in, the JPL ephemeris is downloaded on first use, and the same environment variables apply. Intel Macs get a native osx-64 build here.

Build from Source

The package can be built and installed from source, which needs a stable Rust toolchain (rustup). The simplest way is to build the wheel package:

git clone https://github.com/ssmichael1/satkit
cd satkit
mkdir wheel
cd wheel
python -m pip wheel ..

Something not working?

See Troubleshooting & FAQ for pip falling back to a source build, data warnings, and download failures.