Open12
pixiでPythonの環境構築をする

pixi使い始めたので一旦スクラップでまとめる

install
curl -fsSL https://pixi.sh/install.sh | bash
~/.bashrc
eval "$(pixi completion --shell bash)"
update
pixi self-update
uninstall
rm ~/.pixi/bin/pixi

プロジェクトの作成
pixi init pixi-hello-world
cd pixi-hello-world

pyproject.tomlで管理する
pixi init pixi-py --format pyproject
pixi-py
├── pyproject.toml
└── src
└── pixi_py
└── __init__.py
pixi.toml
pixi.tomlで管理したほうがシンプルそうだと思ったので,以下はpixi.toml前提で進める
example
[project]
channels = ["conda-forge"]
name = "workspace"
platforms = ["linux-64"]
version = "0.1.0"
[tasks]
[dependencies]
python = "==3.7"
loguru = ">=0.6.0,<0.7"
setuptools = ">=69.0.3,<70"
omegaconf = ">=2.3.0,<3"
numpy = ">=1.21.6,<2"
ezc3d = ">=1.5.0,<2"
typing = ">=3.10.0.0,<4"
colour = ">=0.1.5,<0.2"
cudatoolkit = "10.2.*"
pip = ">=24.0,<25"
scipy = "==1.6.3"
scikit-learn = ">=1.0.2,<2"
trimesh = "==3.9.15"
cython = ">=0.29.32,<0.30"
matplotlib = ">=3.5.3,<4"
[pypi-dependencies]
opencv-python = ">=4.11.0.86, <5"
human-body-prior = { git = "git+https://github.com/nghorbani/human_body_prior.git", rev = "SOMA" }
body-visualizer = { git = "git+https://github.com/nghorbani/body_visualizer" }
configer = { git = "git+https://github.com/nghorbani/configer.git" }
aitviewer = ">=1.13.0, <2"
[system-requirements]
libc = { family = "glibc", version = "2.27" }
cuda = "10.2"

pixi コマンド
pixi shell-hook
環境変数をprintする
export PATH="/workspace/.pixi/envs/default/bin:/root/.pixi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export CONDA_PREFIX="/workspace/.pixi/envs/default"
export PIXI_PROJECT_ROOT="/workspace"
export PIXI_PROJECT_VERSION="0.1.0"
export PIXI_IN_SHELL="1"
export PIXI_EXE="/usr/local/bin/pixi"
export PIXI_PROJECT_NAME="workspace"
export PIXI_PROJECT_MANIFEST="/workspace/pixi.toml"
export CONDA_DEFAULT_ENV="workspace"
export PIXI_ENVIRONMENT_NAME="default"
export PIXI_ENVIRONMENT_PLATFORMS="linux-64"
export PIXI_PROMPT="(workspace) "
. "/workspace/.pixi/envs/default/etc/conda/activate.d/libxml2_activate.sh"
# shellcheck shell=bash
pixi() {
local first_arg="$1"
local cmd="$PIXI_EXE $*"
eval "$cmd"
case "$first_arg" in
add|a|remove|rm|install|i)
eval "$($PIXI_EXE shell-hook --change-ps1 false)"
hash -r
;;
esac
}
export PS1="(workspace) ${PS1:-}"
環境変数に関して詳しくは以下を見ると良さそう
- https://pixi.sh/latest/features/environment/#activation
- https://pixi.sh/latest/reference/pixi_manifest/#the-activation-table
こんな感じで追加できる?
[activation.env]
# Python users often set:
PYTHONIOENCODING = "utf-8"
PYTHONNOUSERSITE = "1"
# R users often set:
PIXI_R_LIBS = "$CONDA_PREFIX/lib/R/library"
R_LIBS = "$PIXI_R_LIBS"
R_LIBS_USER = "$PIXI_R_LIBS"
pixi shell
仮想環境をactivateする.. .venv/bin/activate
と同じ効果.
pixi run
仮想環境内でコマンドを実行する
pixi run python XXX.py
cache
ここに残る
Linux: $XDG_CACHE_HOME/rattler
or $HOME/.cache/rattler

VSCode Devcontainer
以下を参考にする.今後試してみたい

pixi add
-
--pypi
- PyPIからinstall
- version指定のparseのされ方はPEP0508に従う
-
--git
- gitのリポジトリからinstall
--branch <BRANCH>
--tag <TAG>
--rev <REV>
--subdir <SUBDIR>
install from conda
pixi add numpy
pixi add numpy pandas "pytorch>=1.8"
pixi add "numpy>=1.22,<1.24"
install from git
pixi add --git https://github.com/wolfv/pixi-build-examples boost-check
pixi add --git https://github.com/wolfv/pixi-build-examples --branch main --subdir boost-check boost-check
install from pypi
pixi add --pypi Django==5.1rc1
pixi add --pypi "boltons>=24.0.0" --feature lint
pixi add --pypi "boltons @ https://files.pythonhosted.org/packages/46/35/e50d4a115f93e2a3fbf52438435bb2efcf14c11d4fcd6bdcd77a6fc399c9/boltons-24.0.0-py3-none-any.whl"
pixi add --pypi "exchangelib @ git+https://github.com/ecederstrand/exchangelib"
pixi add --pypi "project @ file:///absolute/path/to/project"
pixi add --pypi "project@file:///absolute/path/to/project" --editable
pixi add --git https://github.com/mahmoud/boltons.git boltons --pypi
pixi add --git https://github.com/mahmoud/boltons.git boltons --branch main --pypi
pixi add --git https://github.com/mahmoud/boltons.git boltons --rev e50d4a1 --pypi
pixi add --git https://github.com/mahmoud/boltons.git boltons --tag v0.1.0 --pypi
pixi add --git https://github.com/mahmoud/boltons.git boltons --tag v0.1.0 --pypi --subdir boltons

pixi.toml
以下を参考にまとめる

pixi task
pixi task add
コマンドを追加
pixi task add chmpy "python3 -m pip install --upgrade pip setuptools wheel && python3 -m pip in
stall 'git+https://github.com/mattloper/chumpy'"
pixi run command
以下で実行
pixi run command
pixi task alias
pixi task remove
pixi task list

pixi list
-
[REGEX]
: 正規表現で一致するパッケージのみを表示 -
--json
: json形式 -
--json-pretty
: キレイなjson形式 -
--sort-by <SORT_BY>
: <SORT_BY>=[default: name] [size, name, type]
pixi list [REGEX]
pixi tree
pixi tree <package>

pixi global
pixi global edit
defaultはnanoだが以下のように設定できる
pixi global edit code
pixi global edit vim
pixi global install
pixi global install ruff

anacondaのenvironment.ymlから環境を作成する
pixi init --import environment.yml