Print

Print


@simonmichal thanks for all of your help! Responding inline

> @raymondEhlers : thanks for your comment, could you provide a more concrete example on how to determine the `pyenv` installation to be used?
> 
> My understanding is that:
> 
>     * `PYENV_ROOT` contains path to `.pyenv` location, for example: /home/username/.pyenv
> 

Agreed

>     * `pyenv prefix` will return `venv` prefix or simply `/usr`
> 

I'm not sure this is quite right. Running some tests on my systems, using the system python with `pyenv prefix` will indeed return `/usr`. But for non-system versions, it will return the path to the python installed via pyenv, not the virtualenv. See below:

```bash
[13:20] rehlers@pc059 /software/rehlers/dev/quarantine $ lsl
[13:33] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ pyenv versions
  system
  3.6-system
  3.7.7
* 3.9.2 (set by /software/rehlers/dev/quarantine/.python-version)
[13:33] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ pyenv prefix
/software/rehlers/software/pyenv/versions/3.9.2
[13:33] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ pyenv local 3.7.7
[13:33] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ pyenv version
3.7.7 (set by /software/rehlers/dev/quarantine/pyenv-tests/.python-version)
[13:33] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ pyenv prefix
/software/rehlers/software/pyenv/versions/3.7.7
[13:33] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ python3 -m venv venv
[13:33] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ source venv/bin/activate
(venv) [13:34] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ pyenv version
3.7.7 (set by /software/rehlers/dev/quarantine/pyenv-tests/.python-version)
(venv) [13:34] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ pyenv prefix
/software/rehlers/software/pyenv/versions/3.7.7
(venv) [13:34] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ which python-config
/software/rehlers/software/pyenv/shims/python-config
(venv) [13:34] rehlers@pc059 rehlers/dev/quarantine/pyenv-tests $ which python3-config
/software/rehlers/software/pyenv/shims/python3-config
```

So, I think `libpython.so` will always at `$(pyenv prefix)/lib/libpython3.so`, and the headers will be at `$(pyenv prefix)/include`

>     * `python-config` has to be installed with python devel package
> 

As a note, on both of my systems, I see that pyenv shims `python-config` and therefore will provide it via the python installation, but I can't rule out that it's shimming it because it was already installed via the python-dev package. I'll try to verify in a docker container

> 
> It would be great if we could come up with a docker based scenario where we could test the pip installation, e.g.
> 
> ```
> docker run -it --rm ubuntu:bionic /bin/bash
> 
> apt-get update
> apt-get -y install python3.7 python3-pip python3.7-venv pkg-config cmake uuid-dev libssl-dev libz-dev
> 
> PYTHON_CONFIGURE_OPTS='--enable-shared' pyenv install 3.7-dev
> PYTHON_CONFIGURE_OPTS='--enable-shared' pyenv install 3.7.11
> ```
> 
> In this scenario we have two installations with `libpython3.so`:
> 
>     * `~/.pyenv/versions/3.7-dev/lib/libpython3.so`
> 
>     * `~/.pyenv/versions/3.7.11/lib/libpython3.so`
> 
> 
> Could you give me a snipped of python code or shell script that will decide which one to choose?

If it's acceptable, I think it would be much simpler to retrieve this via `pyenv version`. There are many different ways to specify the version (.python-version files, `PYENV_VERSION`, etc), which could make this rather brittle. The full description is [here](https://github.com/pyenv/pyenv#choosing-the-python-version)

I'll play around with a docker container a bit to try to independently confirm a few of my statements above, but I think `pyenv prefix` should always contain the python lib of interest

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/xrootd/xrootd/issues/1474#issuecomment-911578253

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1