Skip to content

Conversation

@JeppeKlitgaard
Copy link
Contributor

@JeppeKlitgaard JeppeKlitgaard commented Jan 30, 2026

This PR is not intended to be merged, but instead serves as an appetiser for the CIL team to explore the viability of using Pixi to manage the development experience in order to ease their own workflows and support easy and local building of documentation, execution of tests, etc. In addition, it would allow tourist and future contributors to get a working setup much more easily than is currently the case.

This follows on from the work done to fix #2269 and #2257, which resulted in a lot of difficulties for people during the first day of the CIL user meeting hackathon.

Importantly, this configuration does not remove support for developers using conda to contribute to CIL. Additionally, it does not change the build system at all, and does not aim to. Instead, it allows reproducible, fast and easy construction of environments, which prevents common pain-points around activating conda environments and keeping them up to date with the local environment specification.

Examples of things that the included Pixi configuration accomplishes:

# This creates a test environment and runs the unit tests inside it. If the environment already exists but does not match the specified dependencies (for example, the user has switched branches, which use different dependencies. This would be the case for a development branch looking into updating a dependency such as TIGRE or numpy2, for example)
pixi run test  # CPU
pixi run test-gpu  # GPU, different environment which has CUDA, TIGRE, ASTRA installed

# Build and serve documentation locally, with hot-reloading. Works out-of-the-box on all operating systems
pixi run docs-serve

# This creates local environments that are automatically discovered by VSCode and can be selected by user
pixi install

# Spawns a shell with the default environment configured
pixi shell 

# Spawns a shell with the GPU environment configured
pixi shell -e gpu

# Spawns a jupyter server
pixi run jupyter  # CPU
pixi run -e gpu jupyter  # GPU

These commands would be very simple to document in the README.md or in the contributor documentation.

Other advantages are significantly faster solving, which is currently quite slow, even on modern mamba configurations.

For reference, the team behind Pixi includes the developers of boa, mamba, quetz, and rattler-build. They are responsible for most of the innovation within the conda ecosystem in recent years, which gives some credence to Pixi.

Additionally it has significantly simplified the building of CIL's TIGRE builds, see TomographicImaging/TIGRE-conda#16

Non-goals

  • Replace conda as an option for local development environments
  • Replace existing build system

Both of these non-goals could become goals in the future, but would not need to be done now. At no point would it be required to break existing setups and conda as an environment manager could be phased out at any speed desired, or kept for all eternity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

Investigation into pixi as a build tool and package manager Use pixi for CI instead of conda

1 participant