Thanks for the reply. Christopher Baines writes:
> Build systems are a mechanic to deduplicate common steps, but also > common inputs between packages, and the python-build-system will include > a default Python as an input. > > https://git.savannah.gnu.org/cgit/guix.git/tree/guix/build-system/python.scm#n138 Got it - so the version is set behind the scenes depending on the current python package definition. > So, you can't have this particular python-scipy output in your store > without python as well, as it's referenced by some shared libraries, > which I guess makes sense. Yep - so even tho python 3.8 is not installed by installing eg python-scipy, the package is made available in the store as it's referenced. > When the default python version is changed, the build system will change > accordingly. Yep makes sense - so the python package will now reference the 3.9 package here instead of 3.8: ;; Current 3.x version. (define-public python-3 python-3.8) I'm guessing my local Guix would stay on 3.8 until I did a guix upgrade. At this point the new version of python-3 would force any python packages I had to reinstall against 3.9. I assume my local 3.8 system would be left untouched, such that I could rollback both the python version and my packages if I wanted? What would happen if I installed a new python package after pulling the latest package definitions tho? So I have a system say with python3.8 and python-scipy, and I decide I want to then install python-pandas (for example). Will it not then build this for python 3.9 (due to the new definition), if the version of python has incremented between the installs of python-scipy and python-pandas? Would I then have to manually reinstall python-scipy to have it under 3.9 (as well as 3.8) (or do a guix upgrade)? Last question, if today I wanted to create a profile that installed python-scipy against the python 3.9 package definition (which already exists in Guix it's just not the default). Do I have to change the python-3 definition as per above, or is there another way of saying "use python3.9 just for this profile". I suspect I could use a manifest to install 3.9 rather than the default, but won't any packages still depend on 3.8 unless I switch the python-3 definition? Thanks again!
