pixi and uv in a container
Here is an example basic template to setup both tools in a Singularity container.
Bootstrap: docker
From: ubuntu:24.04
%environment
export LC_ALL=C.utf8
export PYTHONNOUSERSITE=True
export PIXI_HOME=/opt/pixi
export PATH=/opt/pixi/bin:/opt/uv:/opt/uv/tool_bin:${PATH}
%post
export LC_ALL=C.utf8
export PYTHONNOUSERSITE=True
export DEBIAN_FRONTEND=noninteractive
# apt ============================================
apt update && apt-get -y install curl
# pixi ===========================================
PIXI_PREFIX="/opt/pixi"
export PIXI_NO_PATH_UPDATE=1
export PIXI_CACHE_DIR="/tmp/pixi_cache"
export PIXI_HOME="${PIXI_PREFIX}"
mkdir -p ${PIXI_HOME}
curl -fsSL https://pixi.sh/install.sh | bash
export PATH="${PIXI_PREFIX}/bin:${PATH}"
pixi global install bat
# uv ==============================================
UV_PREFIX="/opt/uv"
export UV_INSTALL_DIR="${UV_PREFIX}"
mkdir -p ${UV_INSTALL_DIR}
export INSTALLER_NO_MODIFY_PATH=1
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="${UV_PREFIX}:${UV_PREFIX}/tool_bin:${PATH}"
export UV_CACHE_DIR="/tmp/uv_cache"
export UV_PYTHON_BIN_DIR="${UV_PREFIX}"
export UV_PYTHON_INSTALL_DIR="${UV_PREFIX}/python"
export UV_TOOL_DIR="${UV_PREFIX}/tool"
export UV_TOOL_BIN_DIR="${UV_PREFIX}/tool_bin"
#export UV_LINK_MODE=copy
uv tool install qrcode
%runscript
#!/bin/sh
if command -v $SINGULARITY_NAME > /dev/null 2> /dev/null; then
exec $SINGULARITY_NAME "$@"
else
echo "# ERROR !!! Command $SINGULARITY_NAME not found in the container"
fi