Re: Profiles for Python projects

2020-06-19 Thread Zelphir Kaltstahl
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

2020-06-18 Thread Marius Bakke
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

2020-06-18 Thread Zelphir Kaltstahl
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