본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

pixi.toml, pixi.lock, features, PyPI 계층

~11 min · pixi, concepts, internals

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

네 가지 개념이면 pixi의 구조를 대부분 이해할 수 있어.

pixi.toml. 프로젝트의 manifest로 이름, channels, conda-forge 의존성, PyPI 의존성, tasks, features, environments를 선언해. pixi의 package.json이나 Cargo.toml에 해당하며 프로젝트 요구사항의 중심 기록이야.

pixi.lock. 자동으로 생성되는 lockfile로, 대상으로 삼은 모든 플랫폼에서 직접·전이 의존성을 콘텐츠 해시와 함께 고정해. 다른 컴퓨터에서 pixi install을 실행해도 비트 단위로 같은 환경이 만들어져. 항상 버전 관리에 포함하고 직접 편집하지 마.

Features와 environments. pixi.toml은 의존성의 이름 붙은 묶음인 features와 feature 조합인 environments를 선언할 수 있어. 기본 구성은 공통 의존성과 dev feature 정도로 단순해. 복잡한 프로젝트라면 cuda, amd, cpu features를 만들고 하나의 pixi.toml에서 gpu-cuda, gpu-amd, cpu-only 환경을 구성할 수도 있어. 머신 러닝 프로젝트에 monorepo식 재현성을 제공하는 구조야.

uv를 통한 PyPI 계층. pixi.toml에 PyPI 의존성을 선언하면 pixi가 uv를 호출해 해석해. conda-forge는 binary를, uv는 순수 Python을 맡아 두 생태계를 깔끔하게 나눠. pixi.lock에는 두 계층이 따로 기록되지만 사용자는 하나의 작업 흐름으로 다룰 수 있어.

Code

진짜 pixi.toml·toml
[project]
name = "my-ml-project"
version = "0.1.0"
channels = ["conda-forge", "pytorch"]
platforms = ["osx-arm64", "linux-64"]

[dependencies]
python = "3.12.*"
numpy = "*"
pandas = "*"
pytorch = "*"

[pypi-dependencies]
fastapi = "*"
pydantic = ">=2.0"

[tasks]
train = "python train.py"
serve = "uvicorn server:app --reload"

[feature.dev.dependencies]
pytest = "*"
ruff = "*"

[environments]
default = { features = [], solve-group = "default" }
dev = { features = ["dev"], solve-group = "default" }
conda environment.yml에서 이전하기·bash
# pixi 가 conda environment.yml 파일 import 가능
conda env export --from-history > environment.yml
pixi init --import environment.yml

# 같은 패키지의 pixi.toml 생성.
# 'pixi install' 로 resolve + install.

External links

Exercise

conda environment.yml이 있다면 새 디렉터리에서 'pixi init --import environment.yml'을 실행하고 생성된 pixi.toml을 읽어. 기존 선언이 대부분 깔끔하게 옮겨지고 pixi가 tasks, features, lockfile로 무엇을 더하는지 바로 볼 수 있어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.