Skip to main content

Installation

CCSDSPy is a pure-Python library for reading CCSDS telemetry packets that follow the Space Packet Protocol used by NASA and ESA missions. It is published on PyPI, so installing it is a single pip command, and it has only two runtime dependencies.

Install with pip

Install the latest release from PyPI:

pip install ccsdspy

To install into a specific environment, run pip from that environment's interpreter so the package lands in the right place:

python -m pip install ccsdspy

The most recent release at the time of writing is 1.4.3 (published November 2025).

tip

Installing inside a virtual environment keeps CCSDSPy and its dependencies isolated from your system Python. Create and activate one first with python -m venv .venv && source .venv/bin/activate (use .venv\Scripts\activate on Windows), then run the pip install command above.

Dependencies

CCSDSPy declares two runtime dependencies, which pip installs automatically:

PackageMinimum versionRole
numpy>=1.8.0Vectorized bit shifting and masking; packet fields are returned as NumPy arrays.
bitstruct>=8.17.0Bit-level packing and unpacking of packet fields.

Neither dependency has an upper version bound, so current NumPy releases are supported.

note

NumPy is a hard requirement, not an optional extra. Every field parsed from a packet — whether defined with PacketField or PacketArray, and whether read by FixedLength or VariableLength — is returned to you as a NumPy array, so NumPy is always installed alongside CCSDSPy.

Supported Python versions

The project sets requires-python = ">=3.6" and publishes wheels classified for the following interpreters:

PythonSupported
3.6Yes
3.7Yes
3.8Yes
3.9Yes
3.10Yes
3.11Yes
3.12Yes
3.13Yes
info

While the package metadata still allows Python 3.6, those releases are long past their upstream end-of-life. For new work, use a currently maintained Python (3.9 or newer) so you also get supported NumPy builds.

Verify the installation

After installing, confirm that the package imports and check the installed version:

python -c "import ccsdspy; print(ccsdspy.__version__)"

This should print the version you installed (for example 1.4.3). You can also confirm that the core API objects are importable:

# Illustrative example — confirms the public API is available.
import ccsdspy
from ccsdspy import FixedLength, VariableLength, PacketField, PacketArray

print(ccsdspy.__version__)
print(FixedLength, VariableLength, PacketField, PacketArray)

If both commands run without an ImportError, CCSDSPy and its dependencies are installed correctly and you are ready to define a packet layout. The four imported objects are the building blocks you will use throughout the rest of this guide:

  • FixedLength — reader for packets whose layout is the same in every packet.
  • VariableLength — reader for packets that contain variable-length or expanding fields.
  • PacketField — defines a single scalar field (name, data type, bit length).
  • PacketArray — defines an array field with a shape and element layout.

Sources