GitHub - prefix-dev/pixi: Package management made easy (original) (raw)

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

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:

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:

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:

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 -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 -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

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:

~/.bashrc

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

Zsh (default on macOS)

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

~/.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.

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

Fish

Add the following to the end of ~/.config/fish/config.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):

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:

~/.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:

Alpine Linux

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

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:

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:

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:

and on Windows: PIXIBIN="PIXI_BIN = "PIXIBIN="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:

➜ pixi A package management and workflow tool

Usage: pixi [OPTIONS]

Commands: completion Generates a completion script for a shell init Creates a new project add Adds a dependency to the project run Runs task in project shell Start a shell in the pixi environment of the project global Global is the main entry point for the part of pixi that executes on the global(system) level auth Login to prefix.dev or anaconda.org servers to access private channels install Install all dependencies task Command management in project info Information about the system and project upload Upload a package to a prefix.dev channel search Search a package, output will list the latest version of package project help Print this message or the help of the given subcommand(s)

Options: -v, --verbose... More output per occurrence -q, --quiet... Less output per occurrence --color Whether the log needs to be colored [default: auto] [possible values: always, never, auto] -h, --help Print help -V, --version Print version

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

Run the installed package in its environment

pixi run cowpy "Thanks for using pixi"

Activate a shell in the environment

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.

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.

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.