Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Philippe Ombredanne
    @pombredanne
    @Erotemic pyenv only and exclusively builds from sources.
    You want to look for prebuilt binary packages instead of pyenv (or build your own) ... which OS?
    Jon Crall
    @Erotemic
    Ideally, any modern 64 bit OS, but it would be fine with just x86_64 linux. One of the use cases is that I'm trying to walk non-technical users through installing a Python application. They don't have much patience for compiling code, and sometimes they don't even have the ability to use sudo to install the deps like build-essential. I was using conda to achieve this, but they've changed their license such that it makes it hard to provide a reliable and truly FOSS solution. The other use case that I mentioned is just setting up a machine quickly without having to compile (and pgo optimize) python. (Maybe there is a way to use Conan to do this? I'm not super familiar with the system, so I'm not sure exactly what you can do with it).
    ashwinvis
    @ashwinvis:matrix.org
    [m]
    I made this pyenv plugin recently, which could be useful if you use pyenv-virtualenv and wish to upgrade your virtual environments to a different Python compiler version https://github.com/ashwinvis/pyenv-virtualenv-migrate/. Feedback welcome 🙂
    Philippe Ombredanne
    @pombredanne

    @Erotemic
    The first thing that comes to mind as you seem to be on some Debian linux or derivative (you mentioned buidl-essential) would be the deadsnakes PPA https://launchpad.net/~deadsnakes to get a binary Python package for a given Python version. This would require sudo though.

    The second thing that comes to mind in your case and that could be Linux-distro independent would be AppImage, but that might imply you may need to do the packaging in the first place? there may be some Python appimages to reuse.

    https://appimage.org/ and https://appimage.github.io/apps/ ?

    Snaps and flatpack are of the same style.

    AppImage does NOT require root
    Jon Crall
    @Erotemic
    It is important that I don't require sudo (getting sysadmin to install things I need on computers is a huge pain, my life becomes much easier if I can bypass this). I did not know about AppImage, that looks like it might work.
    Philippe Ombredanne
    @pombredanne
    @Erotemic there are pretty awesome. Linus picked that for installation of his dive log app
    https://subsurface.github.io/download/
    Jon Crall
    @Erotemic
    @pombredanne would it be possible to modify pyenv such that it can use the python-appimage? The idea being that could pyenv install python-appimage-3.9 and then get an appropriate folder in ~/.pyenv/versions? Is there any mechanism to expose the shared library with app-image? IIUC, there would be no way to build or use a c-extension-module with python-appimage that requires loading symbols from the libpython.so, correct?
    kevaad
    @kevaad:matrix.org
    [m]

    Hello everyone. I have problem with my python symlink after activating new venv with pyenv.

    ❯ which python
    /usr/bin/pythonpython -V
    Python 3.9.4
    ❯ which pyenv
    /home/vicky/.pyenv/bin/pyenv
    ❯ pyenv versions
    * system (set by /home/vicky/.pyenv/version)
      3.8.9
    ❯ pyenv which python
    /usr/bin/python
    ❯ pyenv global
    system
    ❯ pyenv global 3.8.9
    ❯ pyenv global
    3.8.9
    ❯ which python
    /usr/bin/python
    ❯ pyenv which python
    /home/vicky/.pyenv/versions/3.8.9/bin/python

    As you see, I still get my original system python version when I do which python even after activating 3.8.9. Can anyone help?

    thanks in advance

    I'm on Ubuntu 21.04 and default python version is 3.9.4
    I have installed python-is-python3 package to get around using python instead of python3
    freephys
    @freephys
    pip install on ubuntu failed after install the dep suggested on python 3.7

    Downloading http://pypi.doubanio.com/packages/98/83/07b67ec0f26f61894ab65cf1e325c2bd8938f8f4379e989ffadedcbb07e1/pyenv-0.0.1.tar.gz (1.4 kB)
    Building wheels for collected packages: pyenv
    Building wheel for pyenv (setup.py) ... error
    ERROR: Command errored out with exit status 1:
    command: /home/ls66635/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/user/1000/pip-install-2bivr697/pyenv/setup.py'"'"'; file='"'"'/tmp/user/1000/pip-install-2bivr697/pyenv/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d /tmp/user/1000/pip-wheel-cjs6jdk1
    cwd: /tmp/user/1000/pip-install-2bivr697/pyenv/
    Complete output (12 lines):
    running bdist_wheel
    running build
    installing to build/bdist.linux-x86_64/wheel
    running install

    ###################### NOTE

    We are sorry, but this package is not installable with pip.

    Please read the installation instructions at:

    https://github.com/pyenv/pyenv#installation

    #

    ERROR: Failed building wheel for pyenv
    Running setup.py clean for pyenv
    Failed to build pyenv
    Installing collected packages: pyenv
    Running setup.py install for pyenv ... error
    ERROR: Command errored out with exit status 1:
    command: /home/ls66635/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/user/1000/pip-install-2bivr697/pyenv/setup.py'"'"'; file='"'"'/tmp/user/1000/pip-install-2bivr697/pyenv/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/user/1000/pip-record-bcdv1lof/install-record.txt --single-version-externally-managed --compile --install-headers /home/ls66635/anaconda3/include/python3.7m/pyenv
    cwd: /tmp/user/1000/pip-install-2bivr697/pyenv/
    Complete output (9 lines):
    running install

    ############################ NOTE ############################
    We are sorry, but this package is not installable with pip.
    
    Please read the installation instructions at:
    
    https://github.com/pyenv/pyenv#installation
    ##############################################################
    
    ----------------------------------------

    ERROR: Command errored out with exit status 1: /home/ls66635/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/user/1000/pip-install-2bivr697/pyenv/setup.py'"'"'; file='"'"'/tmp/user/1000/pip-install-2bivr697/pyenv/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/user/1000/pip-record-bcdv1lof/install-record.txt --single-version-externally-managed --compile --install-headers /home/ls66635/anaconda3/include/python3.7m/pyenv Check the logs for full command output.

    coxoperationsengineer
    @coxoperationsengineer
    Hello, recently upgraded to 2.0 with brew, standard ZSH on Big Sur, and I don't currently have a .profile or .zprofile, it is unclear from the instructions, should I be creating them?
    Angus Hollands
    @agoose77:matrix.org
    [m]
    @coxoperationsengineer: what configuration files do you have in $HOME ?
    coxoperationsengineer
    @coxoperationsengineer
    @agoose77:matrix.org I have .zshrc only and had the following working until the upgrade
    # Pyenv requirements to attach to shell
    if command -v pyenv 1>/dev/null 2>&1; then
      eval "$(pyenv init -)"
      eval "$(pyenv virtualenv-init -)"
    fi
    Angus Hollands
    @agoose77:matrix.org
    [m]
    is there a bash_profile or bashrc in your $HOME too?
    coxoperationsengineer
    @coxoperationsengineer
    there is but it is empty
    Angus Hollands
    @agoose77:matrix.org
    [m]
    which one do you have?
    coxoperationsengineer
    @coxoperationsengineer
    .bash_profile
    Angus Hollands
    @agoose77:matrix.org
    [m]
    OK. Is that where you would normally set your $PATH variables?
    Also, is ZSH your login shell?
    coxoperationsengineer
    @coxoperationsengineer
    No normally I set them in .zshrc, and yes ZSH is the default login shell now in Mac OS Big Sur on a clean install
    coxoperationsengineer
    @coxoperationsengineer
    @agoose77:matrix.org it also appears that by default there is not a ~/.zprofile in Mac OS, but there is a zprofile in /etc with the following
    # System-wide profile for interactive zsh(1) login shells.
    
    # Setup user specific overrides for this in ~/.zprofile. See zshbuiltins(1)
    # and zshoptions(1) for more details.
    
    if [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
    fi
    agoose77
    @agoose77:matrix.org
    [m]
    OK. Let's assume that macosx respects ~/.zprofile, then you just need to modify that file
    However, where are you currently adding pyenv to path?
    coxoperationsengineer
    @coxoperationsengineer

    Generally speaking you can put any settings in ~/.zshrc. It is loaded regardless if the shell is interactive, login, or not. ~/.zprofile does not load for non-login shells, but in macOS the default behavior in the terminal is to launch new shells as a login shell

    So I have my pyenv init statement in ~/.zshrc and have had it there working for almost 2 years, until I got the warning message after brew updated pyenv to 2.0

    Angus Hollands
    @agoose77:matrix.org
    [m]
    @coxoperationsengineer: yes, I read that whilst checking the sourcing order on MacOS 🙂 It's not a question of "can I?", but more "should I?; not all shells should be login shells and although terminals still load bashrc, they are an exception
    So the proper answer is - move your PATH configuration for pyenv to .zprofile, and add a new line for eval "$(pyenv init --path)"
    If you really don't want to do that, then the short answer is that you now need to add the shims to your PATH, which is what eval "$(pyenv init --path)" does.
    You also need to set PYENV_ROOT if I recall correctly, e.g. this answer https://github.com/pyenv/pyenv/issues/1906#issuecomment-834751771
    coxoperationsengineer
    @coxoperationsengineer
    so $(pyenv virtualenv-init -) does it stay put, and just move pyenv to .zprofile?
    Angus Hollands
    @agoose77:matrix.org
    [m]
    That stays put for now - they haven't split the configuration into bash-shell vs path configuration parts yhet
    coxoperationsengineer
    @coxoperationsengineer
    I guess the bigger question, does the warning go away when this is configured properly?
    Angus Hollands
    @agoose77:matrix.org
    [m]
    Yes
    coxoperationsengineer
    @coxoperationsengineer

    OK so far no go, the instructions state: MacOS note: If you installed Pyenv with Homebrew, you don't need to add the PYENV_ROOT= and PATH= lines. You also don't need to add commands into ~/.profile if your shell doesn't use it.

    so I created ~/.zprofile and simply put eval "$(pyenv init --path)" inside of it.

    I left the following in .zshrc per the instructions:
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"

    restart the terminal, message is still there.

    Angus Hollands
    @agoose77:matrix.org
    [m]
    Any changes to z profile don't take effect until you log out and in again
    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.