Skip to content

feat: Add start of uv vs. Pixi#38

Merged
matthewfeickert merged 2 commits into
scikit-build:mainfrom
matthewfeickert:feat/add-pixi-build
Jul 13, 2026
Merged

feat: Add start of uv vs. Pixi#38
matthewfeickert merged 2 commits into
scikit-build:mainfrom
matthewfeickert:feat/add-pixi-build

Conversation

@matthewfeickert

Copy link
Copy Markdown
Collaborator

@henryiii direction on what sort of story you would like here would be useful for finishing this today.

@matthewfeickert matthewfeickert force-pushed the feat/add-pixi-build branch 2 times, most recently from 354f314 to 95f9dbb Compare July 12, 2026 10:22
Comment thread content/basic-packaging/02_tooling.md Outdated
Comment thread content/basic-packaging/02_tooling.md Outdated
Comment thread content/basic-packaging/02_tooling.md Outdated
@matthewfeickert matthewfeickert force-pushed the feat/add-pixi-build branch 2 times, most recently from 14dec84 to 9f2bace Compare July 13, 2026 04:31
Comment thread content/basic-packaging/02_tooling.md Outdated
::::

[^1]: Though `uv` does have its own [PEP 517](https://peps.python.org/pep-0517/) compliant build backend, `uv_build`, for pure-Python projects.
[^2]: Older versions of Pixi also required installing the conda environment before the PyPI dependencies in it could be resolved, but modern Pixi resolves both ecosystems to `pixi.lock` without installing anything (`pixi lock`).

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am going to empirically verify this in the morning. If this needs to get merged before this should be deleted.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems good:

$ pixi init no-install-lock && cd no-install-lock && pixi add --no-install python && pixi add --no-install --pypi scipy && ls -lhtra .pixi/ && pixi lock
✔ Created /tmp/no-install-lock/pixi.toml
✔ Added python >=3.14.6,<3.15
✔ Added scipy >=1.18.0, <2
Added these as pypi-dependencies.
total 16K
-rw-rw-r-- 1 feickert feickert   15 Jul 13 00:33 .gitignore
-rw-rw-r-- 1 feickert feickert   25 Jul 13 00:33 .condapackageignore
drwxrwxr-x 2 feickert feickert 4.0K Jul 13 00:33 .
drwxrwxr-x 3 feickert feickert 4.0K Jul 13 00:33 ..
✔ Lock-file was already up-to-date
[workspace]
channels = ["conda-forge"]
name = "no-install-lock"
platforms = ["linux-64"]
version = "0.1.0"

[tasks]

[dependencies]
python = ">=3.14.6,<3.15"

[pypi-dependencies]
scipy = ">=1.18.0, <2"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe that's not a full example though of what you had in mind.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah no, you meant for development (duh) and then it is still a problem

$ git clone git@github.com:scikit-hep/boost-histogram.git && cd boost-histogram && pixi init --format pyproject && pixi lock --no-install
Cloning into 'boost-histogram'...
remote: Enumerating objects: 9574, done.
remote: Counting objects: 100% (81/81), done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 9574 (delta 33), reused 11 (delta 5), pack-reused 9493 (from 1)
Receiving objects: 100% (9574/9574), 3.56 MiB | 3.54 MiB/s, done.
Resolving deltas: 100% (7023/7023), done.
✔ Added package 'boost-histogram' as an editable dependency.
✔ Added environments 'github', 'test', 'dev', 'docs', 'examples' from optional dependencies or dependency groups.
▪ solving              [━━━━━━━━━━━━━━━━━━━━]  1/1                                                                                                                  ⠒ updating lock file   [00:00:00] [────────────────────────────────────────]    0/8                                                                                 
thread 'main2' (1830632) panicked at crates/pixi_core/src/lock_file/resolve/build_dispatch.rs:477:17:
could not initialize build dispatch correctly
Error:   × failed to solve the pypi requirements of environment 'default' for platform 'linux-64'
  ╰─▶ build dispatch initialization failed: installation of conda environment is required to solve PyPI source dependencies but `--no-install` flag has been set

@matthewfeickert matthewfeickert marked this pull request as ready for review July 13, 2026 05:39
@matthewfeickert matthewfeickert requested a review from henryiii July 13, 2026 05:40
@matthewfeickert

Copy link
Copy Markdown
Collaborator Author

@henryiii if you approve of this as is then one of us can generate the slides and this can go in.

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
@matthewfeickert matthewfeickert merged commit a63410f into scikit-build:main Jul 13, 2026
3 checks passed
@matthewfeickert matthewfeickert deleted the feat/add-pixi-build branch July 13, 2026 12:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants