Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    coxoperationsengineer
    @coxoperationsengineer
    @agoose77:matrix.org ok I will try it again, the instructions state for Mac OS that changes don't require a log out, so didn't attempt it, just restarted terminal
    Jeremy Cantrell
    @jmcantrell

    I'm confused about how modules are being located. I've installed pyenv as a git clone and am able to install python versions, but they seem there seems to be a discrepancy regarding sys.path.

    I've installed a version and selected it: pyenv global 3.9.5

    When installing a package with: pip install msgpack

    I get the output:

    Defaulting to user installation because normal site-packages is not writeable
    Requirement already satisfied: msgpack in /usr/lib/python3.9/site-packages (1.0.2)

    But when I try to use that package at a python repl:

    Python 3.9.5 (default, May  8 2021, 22:00:35)
    [GCC 10.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import msgpack
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ModuleNotFoundError: No module named 'msgpack'

    And sys.path does not show /usr/lib/python3.9/site-packages:

    >>> import sys; print(sys.path)
    ['', '/home/jeremy/.pyenv/versions/3.9.5/lib/python39.zip', '/home/jeremy/.p5/lib/python3.9', '/home/jeremy/.pyenv/versions/3.9.5/lib/python3.9/lib-dynly/.local/lib/python3.9/site-packages', '/home/jeremy/.pyenv/versions/3.9.5/lpackages']
    It looks like I can do pip install --force-reinstall as a workaround, but why does the install command above see /usr/lib but not python?
    Angus Hollands
    @agoose77:matrix.org
    [m]
    @jmcantrell: what happens when you run which pip and pyenv which pip?
    Jeremy Cantrell
    @jmcantrell
    @agoose77:matrix.org ~/.pyenv/shims/pip and ~/.local/bin/pip, respectively.
    and the shebang line for ~/.local/bin/pip is #!/usr/bin/python.
    Angus Hollands
    @agoose77:matrix.org
    [m]
    What does ls $PYENV_ROOT/versions yield?
    Jeremy Cantrell
    @jmcantrell
    a bunch of version directories, one of which is 3.9.5
    Angus Hollands
    @agoose77:matrix.org
    [m]
    OK. Just for my own sanity, with your env activated, does python -m pip install msgpack give the same results? It looks like pip is finding the system installed packge, which it shouldn't when inside a venv.
    Jeremy Cantrell
    @jmcantrell
    are pyenv versions venvs?
    Kal Sze
    @ksze

    are pyenv versions venvs?

    no

    Jeremy Cantrell
    @jmcantrell
    I get "No module named pip" for python -m pip install
    Kal Sze
    @ksze
    pyenv versions are like base installations of Python. You should then use venv, virtualenvwrapper, pipenv, poetry, or the like to create your virtual environment.
    Have you properly initialized pyenv?
    Jeremy Cantrell
    @jmcantrell
    As far as I know. I followed the instructions, pyenv doctor gives the thumbs up, and I've been able to install and use versions.
    Weird. I don't get the not found error on a different version. Gonna reinstall 3.9.5.
    Kal Sze
    @ksze
    I think it's odd that pyenv which pip points you to ~/.local/bin/pip, which then contains #!/usr/bin/python
    Jeremy Cantrell
    @jmcantrell
    Definitely weird
    Kal Sze
    @ksze
    (because you're supposed to be using 3.9.5 from pyenv now)
    Angus Hollands
    @agoose77:matrix.org
    [m]
    Yes, that's what I'm confused about. I just re-installed pyenv to see whether it's a wierd artefact
    Jeremy Cantrell
    @jmcantrell
    And probably my fault. I'm just trying to figure out what I did wrong.
    Kal Sze
    @ksze
    pyenv which pip should have pointed you to $HOME/.pyenv/versions/3.9.5/bin/pip.
    Angus Hollands
    @agoose77:matrix.org
    [m]
    I wonder whether that is what happens when the installed Python doesn't have pip, i.e. the shim falls through to the system
    @jmcantrell: does $PYENV_ROOT/versions/3.9.5/bin/pip exist?
    Kal Sze
    @ksze
    @agoose77:matrix.org but 3.9.5 should come with pip already, no?
    Jeremy Cantrell
    @jmcantrell
    Shoot. I already uninstalled it to reinstall.
    Angus Hollands
    @agoose77:matrix.org
    [m]
    @ksze: absolutely, but sometimes pip can be missing in Python installations. It shouldn't be in pyenv though
    Jeremy Cantrell
    @jmcantrell
    ok, after reinstall, pyenv which pip reports the correct path.
    Is it best to avoid --user installs with pyenv's pip?
    Kal Sze
    @ksze
    I don't think you need --user there because the python version is effectively yours only.
    I myself never use --user with the pip from pyenv.
    Jeremy Cantrell
    @jmcantrell
    What's the best way to tell if a pyenv version is being used (not system)? Check the output of pyenv global?
    Kal Sze
    @ksze
    if you do which python or which pip and it points you to the pyenv shim.
    And then you check pyenv global and pyenv shell
    Jeremy Cantrell
    @jmcantrell
    Sorry, I should have added "programmatically".
    Kal Sze
    @ksze
    Probably something that involves making the python exec print its path and grepping for something in the path that hints at pyenv.
    e.g. grepping for .pyenv/versions/3.9.5/
    Jeremy Cantrell
    @jmcantrell
    Seems like if [[ "$(pyenv global)" == "system" ]]; then would be more robust.
    Kal Sze
    @ksze
    That should also work.
    I mean, it depends on whether you want to determine the python version from within the Python process/script or from a shell script.
    Jeremy Cantrell
    @jmcantrell
    Yeah, you're right. In this case, I just needed to know whether python was the system version or not.
    Eric Dostie
    @remd
    Hello. I'm seeking help with a hunk failure when patching setup.py when installing Python 2.6.6 via pyenv.
    https://pastebin.com/ug0kDxyM has details. I am ensuring that OpenSSL 1.0.x is being utilized during the install, but I'm not sure that my issue is with OpenSSL. it seems more like an issue with the patch that is being applied to setup.py.
    Eric Dostie
    @remd
    pyenv doctor is claiming that OpenSSL is not installed, but it clearly is. what gives? https://pastebin.com/VrzrUDvN
    Eric Dostie
    @remd
    I was able to get pyenv doctor to detect OpenSSL 1.1 successfully (https://pastebin.com/vVzAqj97), but still getting the hunk failure during the install.
    Isaac Ferreira Filho
    @yzakius

    Hello everyone. I'm install pyenv and pyenv-virtualenv following instructions in github.

    My problem: I can't access other python versions that I installed through pyenv. I installed version 3.6.9, but when I use pyenv-virtualenv or a "pyenv shell 3.6.9" I'm still on the same version as my system.

    StephenHogg
    @StephenHogg
    Hi - I've had a look around but aren't able to work out if there's a way to share packages between pyenv virtualenvs? I'm quite keen to avoid a situation where I have 5-10 different copies of torch (~800mb) installed
    would be very grateful for any guidance
    Angus Hollands
    @agoose77:matrix.org
    [m]
    @StephenHogg: not with pyenv + venv - the libraries themselves are installed in conventional Python virtualenvironments
    You can use something like conda, which uses hard-links to avoid duplicating packages (where the versions agree)