guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Language library packages should require language package


From: Thompson, David
Subject: Re: Language library packages should require language package
Date: Sun, 24 Apr 2016 09:09:33 -0400

On Sun, Apr 24, 2016 at 8:24 AM, Hartmut Goebel
<address@hidden> wrote:
> Hi,
>
> playing around with guix environment, I stepped over some weirdness The
> weirdest of is (e.g.):
>
> guix environment  --ad-hoc python-requests
>
> will give you . . . . nothing.

That's not quite right.  It will give you exactly what you asked for:
an environment with only python-requests used in it.  python-requests
defines no search paths, so no environment variables are set.

> Since python-requests does not have python as input, the package is
> installed somewhere out of reach. This is even true when using a python
> virtualenv prior to entering the guix environment (see below for details).
>
> I assume, this is the same for perl and other languages.
>
> So I propose to add python, perl, ... as an import for the "library"
> packages of this language. This would be in the same line as .rpm and
> .deb packages work.

No, this wouldn't be a good idea.  You used the --ad-hoc flag, which
means "create an environment with *only* the direct packages I
specified."  This behavior is correct and will not be changed.  If you
want an ad-hoc python environment, you should add a python package to
your environment:

    guix environment --ad-hoc python python-requests

>
> Now the weirdness analysis:
>
> $ cat echo_paths.sh
> echo PATH=$PATH
> echo PYTHONPATH=$PYTHONPATH
> type python
>
> Now let's set up "--ad-hoc python-requests" (but no python):
>
> $ guix environment --pure --ad-hoc python-requests -- ./echo_paths.sh
> PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
> PYTHONPATH=
> python is /usr/bin/python
>
> Wow, the system python is used, but where is python-requests? Maybe not
> installed, since it already is in the system installation. Let's try a
> virtual environment:
>
> $ pyvenv /tmp/foo
> $ source /tmp/foo/bin/activate
> (foo)$ type python
> python ist /tmp/foo/bin/python
>
> (foo)$ guix environment --pure --ad-hoc python-requests -- ./echo_paths.sh
> PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
> PYTHONPATH=
> python is /usr/bin/python
>
> Huh? What? The virtual env was ignored (or dropped). Why this? Looks
> like --pure resets the environment to something is thinks is correct,
> even if if ist not adding anything to the environments.
>
> Let's try without --pure:
>
> (foo)$ guix environment  --ad-hoc python-requests -- ./echo_paths.sh
> PATH=/tmp/foo/bin:/usr/local/bin:/usr/bin:/usr/local/games:/usr/games:/usr/lib64/qt4/bin:/usr/lib64/qt5/bin:/home/hartmut/bin:/home/hartmut/.local/bin
> PYTHONPATH=/home/hartmut/lib/python
> python is /tmp/foo/bin/python
>
> Okay, this time I get the python within the virtual env. But still:
> where is python-requests?
>
> (foo)$ guix environment  --ad-hoc python-requests -- ls
> /tmp/foo/lib/python3.4/site-packages/
> easy_install.py  pip                  pkg_resources.py  setuptools
> _markerlib       pip-6.1.1.dist-info  __pycache__
> setuptools-3.6.dist-info
>
> It is not installed in the virtual environment either. Where is it?
>
> --
> Regards
> Hartmut Goebel
>
> | Hartmut Goebel          | address@hidden               |
> | www.crazy-compilers.com | compilers which you thought are impossible |
>
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]