Re: Profiles for Python projects
Hi Marius! That makes sense! I guess the GUIX Python packages are each in their own location, so GUIX has to do this. I did not pay enough attention to the PYTHONPATH thing. … testing right now … And it works! Thanks! Regards, Zelphir On 19.06.20 00:22, Marius Bakke wrote: > Hi Zelphir, > > Zelphir Kaltstahl writes: > >> I create a profile with that and it works fine: >> >> guix package --manifest="manifest.scm" >> --profile="${GUIX_EXTRA_PROFILES}"/my-env/my-env >> >> Then I do the sourcing: >> >> GUIX_PROFILE="${GUIX_EXTRA_PROFILES}/my-env/my-env"; source >> "${GUIX_PROFILE}/etc/profile" > [...] > >> I also get a path in the profile I created. So far all seems to just >> work. However, then I hit a snag when trying to run the tests of the >> project: >> >> LOG_LEVEL="DEBUG" PYTHONPATH="$(pwd)/my_project" python3 -m pytest -m >> "my_test_marker" -s -vvv >> >> I now get the error: >> >> No module named pytest > This is because you are overriding PYTHONPATH. If you run it as ... > > LOG_LEVEL="DEBUG" PYTHONPATH="$(pwd)/my_project:$PYTHONPATH" python3 -m > pytest -m "my_test_marker" -s -vvv > > ... you might have better luck. Guix relies on PYTHONPATH to make > Python modules available because there is no single site-packages > directory like in some other distributions. > > HTH! > Marius
Re: Profiles for Python projects
Hi Zelphir, Zelphir Kaltstahl writes: > I create a profile with that and it works fine: > > guix package --manifest="manifest.scm" > --profile="${GUIX_EXTRA_PROFILES}"/my-env/my-env > > Then I do the sourcing: > > GUIX_PROFILE="${GUIX_EXTRA_PROFILES}/my-env/my-env"; source > "${GUIX_PROFILE}/etc/profile" [...] > I also get a path in the profile I created. So far all seems to just > work. However, then I hit a snag when trying to run the tests of the > project: > > LOG_LEVEL="DEBUG" PYTHONPATH="$(pwd)/my_project" python3 -m pytest -m > "my_test_marker" -s -vvv > > I now get the error: > > No module named pytest This is because you are overriding PYTHONPATH. If you run it as ... LOG_LEVEL="DEBUG" PYTHONPATH="$(pwd)/my_project:$PYTHONPATH" python3 -m pytest -m "my_test_marker" -s -vvv ... you might have better luck. Guix relies on PYTHONPATH to make Python modules available because there is no single site-packages directory like in some other distributions. HTH! Marius signature.asc Description: PGP signature
Profiles for Python projects
Hi Guix Users! Today I experimented a little with creating profiles from manifest.scm file for Python projects. I have the following manifest.scm: (specifications->manifest '("python@3.8.2" "python-falcon@2.0.0" "python-levenshtein@0.12.0" "python-jsonschema@3.2.0" "python-pytest@5.3.5")) I create a profile with that and it works fine: guix package --manifest="manifest.scm" --profile="${GUIX_EXTRA_PROFILES}"/my-env/my-env Then I do the sourcing: GUIX_PROFILE="${GUIX_EXTRA_PROFILES}/my-env/my-env"; source "${GUIX_PROFILE}/etc/profile" This also works fine and when I do: which python3 # which pytest I also get a path in the profile I created. So far all seems to just work. However, then I hit a snag when trying to run the tests of the project: LOG_LEVEL="DEBUG" PYTHONPATH="$(pwd)/my_project" python3 -m pytest -m "my_test_marker" -s -vvv I now get the error: No module named pytest So it seems, that somehow modules mentioned with -m Are not found. If I use PyTest without python3 -m in front, it also does not find libraries and I get errors for the dependencies of the actual project. Perhaps there is an easy fix for this. Has anyone used a Guix profile like this before and knows how to make it work? Regards, Zelphir