pixi

Package management made easy

https://github.com/prefix-dev/pixi

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 173 committers (0.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (19.1%) to scientific vocabulary

Keywords

conda conda-environment conda-packages package-management package-manager package-manager-tool python-virtual-environment rust rust-lang

Keywords from Contributors

closember notebooks developer-tools dataflow dag web-app wx tk qt gtk
Last synced: 6 months ago · JSON representation ·

Repository

Package management made easy

Basic Info
  • Host: GitHub
  • Owner: prefix-dev
  • License: bsd-3-clause
  • Language: Rust
  • Default Branch: main
  • Homepage: https://pixi.sh
  • Size: 111 MB
Statistics
  • Stars: 5,154
  • Watchers: 26
  • Forks: 337
  • Open Issues: 607
  • Releases: 102
Topics
conda conda-environment conda-packages package-management package-manager package-manager-tool python-virtual-environment rust rust-lang
Created almost 3 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Security

README.md

banner

![License][license-badge] [![Project Chat][chat-badge]][chat-url] [![Pixi Badge][pixi-badge]][pixi-url]

Pixi: Package Management Made Easy

Overview

pixi is a cross-platform, multi-language package manager and workflow tool built on the foundation of the conda ecosystem. It provides developers with an exceptional experience similar to popular package managers like cargo or yarn, but for any language.

Developed with ❤️ at prefix.dev. Real-time pixi_demo

Highlights

  • Supports multiple languages including Python, C++, and R using Conda packages. You can find available packages on prefix.dev.
  • Compatible with all major operating systems: Linux, Windows, macOS (including Apple Silicon).
  • Always includes an up-to-date lock file.
  • Provides a clean and simple Cargo-like command-line interface.
  • Allows you to install tools per-project or system-wide.
  • Entirely written in Rust and built on top of the rattler library.

Getting Started

Status

Pixi is ready for production! We are working hard to keep file-format changes compatible with the previous versions so that you can rely on Pixi with peace of mind.

Some notable features we envision for upcoming releases are:

  • Build and publish your project as a Conda package.
  • Support for dependencies from source.
  • More powerful "global installation" of packages towards a deterministic setup of global packages on multiple machines.

Installation

pixi can be installed on macOS, Linux, and Windows. The provided scripts will automatically download the latest version of pixi, extract it, and move the pixi binary to ~/.pixi/bin. If this directory does not exist, the script will create it.

macOS and Linux

To install Pixi on macOS and Linux, open a terminal and run the following command:

```bash curl -fsSL https://pixi.sh/install.sh | sh

or with brew

brew install pixi ```

The script will also update your ~/.bashrc to include ~/.pixi/bin in your PATH, allowing you to invoke the pixi command from anywhere. You might need to restart your terminal or source your shell for the changes to take effect.

Starting with macOS Catalina zsh is the default login shell and interactive shell. Therefore, you might want to use zsh instead of bash in the install command:

zsh curl -fsSL https://pixi.sh/install.sh | zsh

The script will also update your ~/.zshrc to include ~/.pixi/bin in your PATH, allowing you to invoke the pixi command from anywhere.

Windows

To install Pixi on Windows, open a PowerShell terminal (you may need to run it as an administrator) and run the following command:

powershell powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex" Changing the execution policy allows running a script from the internet. Check the script you would be running with: powershell powershell -c "irm -useb https://pixi.sh/install.ps1 | more"

The script will inform you once the installation is successful and add the ~/.pixi/bin directory to your PATH, which will allow you to run the pixi command from any location. Or with winget

shell winget install prefix-dev.pixi

Autocompletion

To get autocompletion follow the instructions for your shell. Afterwards, restart the shell or source the shell config file.

Bash (default on most Linux systems)

Add the following to the end of ~/.bashrc:

```bash

~/.bashrc

eval "$(pixi completion --shell bash)" ```

Zsh (default on macOS)

Add the following to the end of ~/.zshrc:

```zsh

~/.zshrc

eval "$(pixi completion --shell zsh)" ```

PowerShell (pre-installed on all Windows systems)

Add the following to the end of Microsoft.PowerShell_profile.ps1. You can check the location of this file by querying the $PROFILE variable in PowerShell. Typically the path is ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 or ~/.config/powershell/Microsoft.PowerShell_profile.ps1 on -Nix.

pwsh (& pixi completion --shell powershell) | Out-String | Invoke-Expression

Fish

Add the following to the end of ~/.config/fish/config.fish:

```fish

~/.config/fish/config.fish

pixi completion --shell fish | source ```

Nushell

Add the following to your Nushell config file (find it by running $nu.config-path in Nushell):

nushell mkdir $"($nu.data-dir)/vendor/autoload" pixi completion --shell nushell | save --force $"($nu.data-dir)/vendor/autoload/pixi-completions.nu"

Elvish

Add the following to the end of ~/.elvish/rc.elv:

```elv

~/.elvish/rc.elv

eval (pixi completion --shell elvish | slurp) ```

Distro Packages

Packaging status

Arch Linux

You can install pixi from the extra repository using pacman:

shell pacman -S pixi

Alpine Linux

pixi is available for Alpine Edge. It can be installed via apk after enabling the testing repository.

shell apk add pixi

Build/install from source

pixi is 100% written in Rust and therefore it can be installed, built and tested with cargo. To start using pixi from a source build run:

shell cargo install --locked --git https://github.com/prefix-dev/pixi.git pixi

We don't publish to crates.io anymore, so you need to install it from the repository. The reason for this is that we depend on some unpublished crates which disallows us to publish to crates.io.

or when you want to make changes use:

shell cargo build cargo test

If you have any issues building because of the dependency on rattler checkout it's compile steps

Uninstall

To uninstall, the Pixi binary should be removed. Delete pixi from the $PIXI_DIR which is default to ~/.pixi/bin/pixi

So on Linux its:

shell rm ~/.pixi/bin/pixi

and on Windows:

shell $PIXI_BIN = "$Env:LocalAppData\pixi\bin\pixi"; Remove-Item -Path $PIXI_BIN

After this command you can still use the tools you installed with pixi. To remove these as well just remove the whole ~/.pixi directory and remove the directory from your path.

Usage

The cli looks as follows:

```bash ➜ pixi Pixi [version 0.50.1] - Developer Workflow and Environment Management for Multi-Platform, Language-Agnostic Workspaces.

Pixi is a versatile developer workflow tool designed to streamline the management of your workspace's dependencies, tasks, and environments. Built on top of the Conda ecosystem, Pixi offers seamless integration with the PyPI ecosystem.

Basic Usage: Initialize pixi for a workspace: $ pixi init $ pixi add python numpy pytest

Run a task:
$ pixi task add test 'pytest -s'
$ pixi run test

Found a Bug or Have a Feature Request? Open an issue at: https://github.com/prefix-dev/pixi/issues

Need Help? Ask a question on the Prefix Discord server: https://discord.gg/kKV8ZxyzY4

For more information, see the documentation at: https://pixi.sh

Usage: pixi [OPTIONS]

Commands: add Adds dependencies to the workspace [aliases: a] auth Login to prefix.dev or anaconda.org servers to access private channels build Workspace configuration clean Cleanup the environments completion Generates a completion script for a shell config Configuration management exec Run a command and install it in a temporary environment [aliases: x] global Subcommand for global package management actions [aliases: g] info Information about the system, workspace and environments for the current machine init Creates a new workspace import Imports a file into an environment in an existing workspace. install Install an environment, both updating the lockfile and installing the environment [aliases: i] list List workspace's packages [aliases: ls] lock Solve environment and update the lock file without installing the environments reinstall Re-install an environment, both updating the lockfile and re-installing the environment remove Removes dependencies from the workspace [aliases: rm] run Runs task in the pixi environment [aliases: r] search Search a conda package self-update Update pixi to the latest version or a specific version shell Start a shell in a pixi environment, run exit to leave the shell [aliases: s] shell-hook Print the pixi environment activation script task Interact with tasks in the workspace tree Show a tree of workspace dependencies [aliases: t] update The update command checks if there are newer versions of the dependencies and updates the pixi.lock file and environments accordingly upgrade Checks if there are newer versions of the dependencies and upgrades them in the lockfile and manifest file upload Upload a conda package workspace Modify the workspace configuration file through the command line help Print this message or the help of the given subcommand(s)

Options: -V, --version Print version

Global Options: -h, --help Display help information -v, --verbose... Increase logging verbosity (-v for warnings, -vv for info, -vvv for debug, -vvvv for trace) -q, --quiet... Decrease logging verbosity (quiet mode) --color Whether the log needs to be colored [env: PIXICOLOR=] [default: auto] [possible values: always, never, auto] --no-progress Hide all progress bars, always turned on if stderr is not a terminal [env: PIXINO_PROGRESS=] ```

Creating a Pixi project

Initialize a new project and navigate to the project directory

pixi init myproject cd myproject

Add the dependencies you want to use

pixi add cowpy

Run the installed package in its environment

bash pixi run cowpy "Thanks for using pixi"

Activate a shell in the environment

shell pixi shell cowpy "Thanks for using pixi" exit

Installing a conda package globally

You can also globally install conda packages into their own environment. This behavior is similar to pipx or condax.

bash pixi global install cowpy

Use in GitHub Actions

You can use Pixi in GitHub Actions to install dependencies and run commands. It supports automatic caching of your environments.

yml - uses: prefix-dev/setup-pixi@v0.8.1 - run: pixi exec cowpy "Thanks for using pixi"

See the documentation for more details.

Contributing 😍

We would absolutely love for you to contribute to Pixi! Whether you want to start an issue, fix a bug you encountered, or suggest an improvement, every contribution is greatly appreciated.

If you're just getting started with our project or stepping into the Rust ecosystem for the first time, we've got your back! We recommend beginning with issues labeled as good first issue. These are carefully chosen tasks that provide a smooth entry point into contributing.These issues are typically more straightforward and are a great way to get familiar with the project.

Got questions or ideas, or just want to chat? Join our lively conversations on Discord. We're very active and would be happy to welcome you to our community. Join our discord server today!

Built using Pixi

To see what's being built with pixi check out the Community page.

Owner

  • Name: prefix.dev
  • Login: prefix-dev
  • Kind: organization
  • Email: hi@prefix.dev
  • Location: Germany

Building blazing fast software package management software ⚡

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: pixi
message: >-
  If pixi contributes to a project that leads to a
  scientific publication, please acknowledge this fact by
  citing according to this file.
type: software
# Based on recommendation we use the authors that are responsible for the tool from `prefix.dev` as authors.
# Using personal email to possibly outlive the employment at `prefix.dev`.
authors:
  - given-names: Ruben
    family-names: Arts
    email: ruben.arts@hotmail.com
  - given-names: Bas
    family-names: Zalmstra
    email: zalmstra.bas@gmail.com
  - given-names: Wolf
    family-names: Vollprecht
    email: w.vollprecht@gmail.com
  - given-names: Tim
    name-particle: de
    family-names: Jager
    email: tdejager89@gmail.com
  - given-names: Nichita
    family-names: Morcotilo
    email: nmorkotilo@gmail.com
  - given-names: Julian
    family-names: Hofer
    email: julian.hofer@protonmail.com
repository-code: 'https://github.com/prefix-dev/pixi/releases/tag/v0.54.1'
url: 'https://pixi.sh/v0.54.1'
abstract: >-
  A cross-platform, language agnostic, package/project
  management tool for development in virtual environments.
keywords:
  - package-management
  - project-management
  - virtual-environments
  - conda
  - pypi
  - development-tools
  - pixi
license: BSD-3-Clause

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 2,005
  • Total Committers: 173
  • Avg Commits per committer: 11.59
  • Development Distribution Score (DDS): 0.7
Past Year
  • Commits: 1,111
  • Committers: 130
  • Avg Commits per committer: 8.546
  • Development Distribution Score (DDS): 0.723
Top Committers
Name Email Commits
Ruben Arts r****s@h****m 602
Hofer-Julian 3****n 315
Bas Zalmstra b****s@p****v 279
Tim de Jager t****m@p****v 187
Wolf Vollprecht w****t@g****m 95
nichmor n****o@g****m 70
Pavel Zwerschke p****w@g****m 68
Olivier Lacroix o****x@m****g 33
dependabot[bot] 4****] 21
James Z.M. Gao g****5@g****m 16
Orhun Parmaksız o****z@g****m 13
Chawye Hsu s****t@c****m 13
renovate[bot] 2****] 11
Parsa Bahraminejad p****d@g****m 10
Lucas Colley l****8@g****m 8
Silvio Traversaro s****o@t****t 8
Jermiah Joseph 4****h 7
Kirpal Grewal 4****1 7
Liam Connors c****l@t****e 6
Vignesh M 6****k 5
github-actions[bot] 4****] 5
Nicholas Bollweg n****g@g****m 5
Hadrien Mary h****m 5
Alex Kerney a****k@m****m 5
Joshua Adelman s****s 4
Spenser Black s****1@g****m 4
Sumanth 3****a 4
Tarun Pratap Singh 1****r 4
ZhengYu, Xu z****u@o****m 4
jaimergp j****p 4
and 143 more...

Packages

  • Total packages: 6
  • Total downloads:
    • cargo 23,941 total
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 71
  • Total maintainers: 4
alpine-edge: pixi-zsh-completion

Zsh completions for pixi

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 7.8%
Dependent packages count: 15.5%
Maintainers (1)
Last synced: 6 months ago
alpine-edge: pixi-doc

A package management and workflow tool (documentation)

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 7.8%
Dependent packages count: 15.5%
Maintainers (1)
Last synced: 6 months ago
alpine-edge: pixi-fish-completion

Fish completions for pixi

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 7.8%
Dependent packages count: 15.5%
Maintainers (1)
Last synced: 6 months ago
alpine-edge: pixi-bash-completion

Bash completions for pixi

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 7.8%
Dependent packages count: 15.5%
Maintainers (1)
Last synced: 6 months ago
alpine-edge: pixi

A package management and workflow tool

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 7.8%
Dependent packages count: 15.5%
Maintainers (1)
Last synced: 6 months ago
crates.io: pixi

A package management and workflow tool

  • Versions: 16
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 23,941 Total
Rankings
Dependent repos count: 29.3%
Dependent packages count: 33.8%
Forks count: 37.5%
Average: 45.0%
Stargazers count: 50.6%
Downloads: 73.8%
Maintainers (3)
Last synced: 6 months ago

Dependencies

.github/workflows/pre-commit.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • pre-commit/action v3.0.0 composite
.github/workflows/rust.yml actions
  • Swatinem/rust-cache v2 composite
  • actions-rust-lang/rustfmt v1 composite
  • actions-rust-lang/setup-rust-toolchain v1 composite
  • actions/checkout v3 composite
  • actions/upload-artifact master composite
  • actions/upload-artifact v3 composite
  • softprops/action-gh-release v1 composite
  • taiki-e/setup-cross-toolchain-action v1 composite
Cargo.lock cargo
  • 394 dependencies
Cargo.toml cargo
  • rattler_digest 0.9.0 development
  • serde_json 1.0.107 development
  • tokio 1.32.0 development
  • toml 0.8.1 development
  • atty 0.2
  • chrono 0.4.31
  • clap 4.4.5
  • clap-verbosity-flag 2.0.1
  • clap_complete 4.4.2
  • console 0.15.7
  • deno_task_shell 0.13.2
  • dirs 5.0.1
  • dunce 1.0.4
  • futures 0.3.28
  • indexmap 2.0.0
  • indicatif 0.17.7
  • insta 1.32.0
  • is_executable 1.0.1
  • itertools 0.11.0
  • miette 5.10.0
  • minijinja 1.0.8
  • once_cell 1.18.0
  • rattler 0.9.0
  • rattler_conda_types 0.9.0
  • rattler_digest 0.9.0
  • rattler_networking 0.9.0
  • rattler_repodata_gateway 0.9.0
  • rattler_shell 0.9.0
  • rattler_solve 0.9.0
  • rattler_virtual_packages 0.9.0
  • reqwest 0.11.20
  • serde 1.0.188
  • serde_json 1.0.107
  • serde_spanned 0.6.3
  • serde_with 3.3.0
  • spdx 0.10.2
  • strsim 0.10.0
  • tempfile 3.8.0
  • thiserror 1.0.49
  • tokio 1.32.0
  • tokio-util 0.7.9
  • toml_edit 0.20.1
  • tracing 0.1.37
  • tracing-subscriber 0.3.17
  • url 2.4.1
examples/docker-build/Dockerfile docker
  • ubuntu latest build