Open maartenbreddels opened 2 months ago
The reason it gets python is to solve the pypi-dependencies
as it needs to a python interpreter to solve (build sdists for their metadata).
I'm not that familiar with wasm so correct me if I'm wrong but you should be able to install wasm package on any platform right?
The reason it gets python is to solve the
pypi-dependencies
as it needs to a python interpreter to solve (build sdists for their metadata).
Could you not do without, by downloading the wheel(s)? I regularly pip install, and about 99% of it is a wheel. If a wheel is not available, the install usually fails (e.g. on osx arm with a old version of python for which a library maintainer is not publishing wheels anymore but forgot the limit the python version - so often a mistake).
To summarize, I think pixi can do pypi installs without using/installing python, which would probably be much faster. If you bail out because you need to build the sdist and then give this error message, that would be much better sane behavior I think.
I'm not that familiar with wasm so correct me if I'm wrong but you should be able to install wasm package on any platform right?
Not sure what you mean here?
Could you not do without, by downloading the wheel(s)?
The initial version of pypi-dependencies
in pixi was wheel only. Which is much faster and simpler but it is not sufficient because of that 99% you mention. There might be more sane solutions to speed up this installation process but it probably requires more custom options. @tdejager could probably elaborate more.
Not sure what you mean here?
Let me ask @wolfv offline, I need to get more up to speed with the wasm
work.
But in the case of wheel only, is it correct to assume you can do without python? So you would only need python installed if there is no compatible wheel available?
Yes, that is correct. The python interpreter is needed for the sdist
building.
If you want, we could add the option to constrain to using only wheels for the resolution. uv
allows this, we would need to figure out the level to set this, e.g. it could be conflicting over solve-groups/environments, and we need to give it a try with the uv
API.
Also we would need to account for it in the pixi code, having different code paths for these options. We would not need to install the conda prefix at all actually before the pypi resolution.
But it seems a common enough use-case to be interesting perhaps.
Anyone who reads this, feel free to make an issue.
To summarize, I think pixi can do pypi installs without using/installing python, which would probably be much faster. If you bail out because you need to build the sdist and then give this error message, that would be much better sane behavior I think.
@maartenbreddels I feel a bit hesitant on adding the behavior you described, because I think it's quite dependent on the use-case, and hence the libraries you work with. A lot of python users will encounter sdists almost instantly for any decently sized project they are using. I feel it would be better, to be able to opt-in to the behavior you want, that way you could even create wheel-only environments e.g.
If a wheel is not available, the install usually fails (e.g. on osx arm with a old version of python for which a library maintainer is not publishing wheels anymore but forgot the limit the python version - so often a mistake).
I've also seen examples where people still use old packaging standards, resulting in sdists. Or researchers that are not developers that follow any old python tutorial for publishing. Building no-arch packages with simple setup.py
's seem well enough.
An opt-in sounds reasonable.
Yeah, I thought the pypi json API would provide dependencies by now, but it doesn't. And indeed, for sdist, you can have dependencies depend on the moon phase for all we know.
There should be a large database that stores/caches all the dependencies... 👀
Anyway, thanks for the explaination.
Checks
[X] I have checked that this issue has not already been reported.
[X] I have confirmed this bug exists on the latest version of pixi, using
pixi --version
.Reproducible example
Issue description
I tried to solve an emscripten environment on osx-arm64. When solving that, pixi tells me to get python installed (curious why). But after I do that, I get:
(I think that ERROR message is unrelated btw)
Expected behavior
I expect it to solve the environment for me :)