Simple Python version management

Overview

Simple Python Version Management: pyenv

Join the chat at https://gitter.im/yyuu/pyenv

Build Status

pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

This project was forked from rbenv and ruby-build, and modified for Python.

Terminal output example

pyenv does...

  • Let you change the global Python version on a per-user basis.
  • Provide support for per-project Python versions.
  • Allow you to override the Python version with an environment variable.
  • Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.

In contrast with pythonbrew and pythonz, pyenv does not...

  • Depend on Python itself. pyenv was made from pure shell scripts. There is no bootstrap problem of Python.
  • Need to be loaded into your shell. Instead, pyenv's shim approach works by adding a directory to your $PATH.
  • Manage virtualenv. Of course, you can create virtualenv yourself, or pyenv-virtualenv to automate the process.

Table of Contents


How It Works

At a high level, pyenv intercepts Python commands using shim executables injected into your PATH, determines which Python version has been specified by your application, and passes your commands along to the correct Python installation.

Understanding PATH

When you run a command like python or pip, your operating system searches through a list of directories to find an executable file with that name. This list of directories lives in an environment variable called PATH, with each directory in the list separated by a colon:

/usr/local/bin:/usr/bin:/bin

Directories in PATH are searched from left to right, so a matching executable in a directory at the beginning of the list takes precedence over another one at the end. In this example, the /usr/local/bin directory will be searched first, then /usr/bin, then /bin.

Understanding Shims

pyenv works by inserting a directory of shims at the front of your PATH:

$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin

Through a process called rehashing, pyenv maintains shims in that directory to match every Python command across every installed version of Python—python, pip, and so on.

Shims are lightweight executables that simply pass your command along to pyenv. So with pyenv installed, when you run, say, pip, your operating system will do the following:

  • Search your PATH for an executable file named pip
  • Find the pyenv shim named pip at the beginning of your PATH
  • Run the shim named pip, which in turn passes the command along to pyenv

Choosing the Python Version

When you execute a shim, pyenv determines which Python version to use by reading it from the following sources, in this order:

  1. The PYENV_VERSION environment variable (if specified). You can use the pyenv shell command to set this environment variable in your current shell session.

  2. The application-specific .python-version file in the current directory (if present). You can modify the current directory's .python-version file with the pyenv local command.

  3. The first .python-version file found (if any) by searching each parent directory, until reaching the root of your filesystem.

  4. The global $(pyenv root)/version file. You can modify this file using the pyenv global command. If the global version file is not present, pyenv assumes you want to use the "system" Python. (In other words, whatever version would run if pyenv weren't in your PATH.)

NOTE: You can activate multiple versions at the same time, including multiple versions of Python2 or Python3 simultaneously. This allows for parallel usage of Python2 and Python3, and is required with tools like tox. For example, to set your path to first use your system Python and Python3 (set to 2.7.9 and 3.4.2 in this example), but also have Python 3.3.6, 3.2, and 2.5 available on your PATH, one would first pyenv install the missing versions, then set pyenv global system 3.3.6 3.2 2.5. At this point, one should be able to find the full executable path to each of these using pyenv which, e.g. pyenv which python2.5 (should display $(pyenv root)/versions/2.5/bin/python2.5), or pyenv which python3.4 (should display path to system Python3). You can also specify multiple versions in a .python-version file, separated by newlines or any whitespace.

Locating the Python Installation

Once pyenv has determined which version of Python your application has specified, it passes the command along to the corresponding Python installation.

Each Python version is installed into its own directory under $(pyenv root)/versions.

For example, you might have these versions installed:

  • $(pyenv root)/versions/2.7.8/
  • $(pyenv root)/versions/3.4.2/
  • $(pyenv root)/versions/pypy-2.4.0/

As far as pyenv is concerned, version names are simply the directories in $(pyenv root)/versions.

Managing Virtual Environments

There is a pyenv plugin named pyenv-virtualenv which comes with various features to help pyenv users to manage virtual environments created by virtualenv or Anaconda. Because the activate script of those virtual environments are relying on mutating $PATH variable of user's interactive shell, it will intercept pyenv's shim style command execution hooks. We'd recommend to install pyenv-virtualenv as well if you have some plan to play with those virtual environments.


Installation

Prerequisites:

For pyenv to install python correctly you should install the Python build dependencies.

Homebrew on macOS

  1. Consider installing with Homebrew
    brew update
    brew install pyenv
  2. Then follow the rest of the post-installation steps under Basic GitHub Checkout, starting with #3 ("Add pyenv init to your shell to enable shims and autocompletion").

If you're on Windows, consider using @kirankotari's pyenv-win fork. (pyenv does not work on windows outside the Windows Subsystem for Linux)

The automatic installer

Visit my other project: https://github.com/pyenv/pyenv-installer

Basic GitHub Checkout

This will get you going with the latest version of pyenv and make it easy to fork and contribute any changes back upstream.

  1. Check out pyenv where you want it installed. A good place to choose is $HOME/.pyenv (but you can install it somewhere else).

     git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    

    Optionally, try to compile dynamic bash extension to speed up pyenv. Don't worry if it fails; pyenv will still work normally:

     cd ~/.pyenv && src/configure && make -C src
    
  2. Define environment variable PYENV_ROOT to point to the path where pyenv repo is cloned and add $PYENV_ROOT/bin to your $PATH for access to the pyenv command-line utility.

    • For bash:

      echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
      echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
    • For Ubuntu Desktop:

      echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
      echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    • For Zsh:

      echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
      echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    • For Fish shell:

      set -Ux PYENV_ROOT $HOME/.pyenv
      set -Ux fish_user_paths $PYENV_ROOT/bin $fish_user_paths
    • Proxy note: If you use a proxy, export http_proxy and HTTPS_PROXY too.

  3. Add pyenv init to your shell to enable shims and autocompletion. Please make sure eval "$(pyenv init -)" is placed toward the end of the shell configuration file since it manipulates PATH during the initialization.

    • For bash:

      echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
    • For Ubuntu Desktop and Fedora:

      echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
    • For Zsh:

      echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc
    • For Fish shell:

      echo -e '\n\n# pyenv init\nif command -v pyenv 1>/dev/null 2>&1\n  pyenv init - | source\nend' >> ~/.config/fish/config.fish

    General warning: There are some systems where the BASH_ENV variable is configured to point to .bashrc. On such systems you should almost certainly put the above mentioned line eval "$(pyenv init -)" into .bash_profile, and not into .bashrc. Otherwise you may observe strange behaviour, such as pyenv getting into an infinite loop. See #264 for details.

  4. Restart your shell so the path changes take effect. You can now begin using pyenv.

    exec "$SHELL"
  5. Install Python build dependencies before attempting to install a new Python version.

  6. Install Python versions into $(pyenv root)/versions. For example, to download and install Python 2.7.8, run:

    pyenv install 2.7.8

    NOTE: If you need to pass configure option to build, please use CONFIGURE_OPTS environment variable.

    NOTE: If you want to use proxy to download, please use http_proxy and https_proxy environment variable.

    NOTE: If you are having trouble installing a python version, please visit the wiki page about Common Build Problems

Upgrading

If you've installed pyenv using homebrew, upgrade using:

brew upgrade pyenv

If you've installed pyenv using the instructions above, you can upgrade your installation at any time using git.

To upgrade to the latest development version of pyenv, use git pull:

cd $(pyenv root)
git pull

To upgrade to a specific release of pyenv, check out the corresponding tag:

cd $(pyenv root)
git fetch
git tag
git checkout v0.1.0

Uninstalling pyenv

The simplicity of pyenv makes it easy to temporarily disable it, or uninstall from the system.

  1. To disable pyenv managing your Python versions, simply remove the pyenv init line from your shell startup configuration. This will remove pyenv shims directory from PATH, and future invocations like python will execute the system Python version, as before pyenv.

pyenv will still be accessible on the command line, but your Python apps won't be affected by version switching.

  1. To completely uninstall pyenv, perform step (1) and then remove its root directory. This will delete all Python versions that were installed under $(pyenv root)/versions/ directory:

    rm -rf $(pyenv root)

    If you've installed pyenv using a package manager, as a final step perform the pyenv package removal. For instance, for Homebrew:

     brew uninstall pyenv
    

Advanced Configuration

Skip this section unless you must know what every line in your shell profile is doing.

pyenv init is the only command that crosses the line of loading extra commands into your shell. Coming from rvm, some of you might be opposed to this idea. Here's what pyenv init actually does:

  1. Sets up your shims path. This is the only requirement for pyenv to function properly. You can do this by hand by prepending $(pyenv root)/shims to your $PATH.

  2. Installs autocompletion. This is entirely optional but pretty useful. Sourcing $(pyenv root)/completions/pyenv.bash will set that up. There is also a $(pyenv root)/completions/pyenv.zsh for Zsh users.

  3. Rehashes shims. From time to time you'll need to rebuild your shim files. Doing this on init makes sure everything is up to date. You can always run pyenv rehash manually.

  4. Installs the sh dispatcher. This bit is also optional, but allows pyenv and plugins to change variables in your current shell, making commands like pyenv shell possible. The sh dispatcher doesn't do anything crazy like override cd or hack your shell prompt, but if for some reason you need pyenv to be a real script rather than a shell function, you can safely skip it.

To see exactly what happens under the hood for yourself, run pyenv init -.

If you don't want to use pyenv init and shims, you can still benefit from pyenv's ability to install Python versions for you. Just run pyenv install and you will find versions installed in $(pyenv root)/versions, which you can manually execute or symlink as required.

Uninstalling Python Versions

As time goes on, you will accumulate Python versions in your $(pyenv root)/versions directory.

To remove old Python versions, pyenv uninstall command to automate the removal process.

Alternatively, simply rm -rf the directory of the version you want to remove. You can find the directory of a particular Python version with the pyenv prefix command, e.g. pyenv prefix 2.6.8.


Command Reference

See COMMANDS.md.


Environment variables

You can affect how pyenv operates with the following settings:

name default description
PYENV_VERSION Specifies the Python version to be used.
Also see pyenv shell
PYENV_ROOT ~/.pyenv Defines the directory under which Python versions and shims reside.
Also see pyenv root
PYENV_DEBUG Outputs debug information.
Also as: pyenv --debug <subcommand>
PYENV_HOOK_PATH see wiki Colon-separated list of paths searched for pyenv hooks.
PYENV_DIR $PWD Directory to start searching for .python-version files.
PYTHON_BUILD_ARIA2_OPTS Used to pass additional parameters to aria2.
If the aria2c binary is available on PATH, pyenv uses aria2c instead of curl or wget to download the Python Source code. If you have an unstable internet connection, you can use this variable to instruct aria2 to accelerate the download.
In most cases, you will only need to use -x 10 -k 1M as value to PYTHON_BUILD_ARIA2_OPTS environment variable

Development

The pyenv source code is hosted on GitHub. It's clean, modular, and easy to understand, even if you're not a shell hacker.

Tests are executed using Bats:

bats test
bats/test/<file>.bats

Please feel free to submit pull requests and file bugs on the issue tracker.

Version History

See CHANGELOG.md.

License

The MIT License

Comments
  • Unable to build Python on macOS Big Sur with Xcode 12 beta

    Unable to build Python on macOS Big Sur with Xcode 12 beta

    I installed macOS Big Sur beta 1, Xcode 12.0 beta (12A6159) on an old Mac to see what breaks. I'm able to install PyEnv via Homebrew, but I'm not able to build any Python version.

    Apple clang version 12.0.0

    % pyenv install 3.8.3
    python-build: use [email protected] from homebrew
    python-build: use readline from homebrew
    Downloading Python-3.8.3.tar.xz...
    -> https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tar.xz
    Installing Python-3.8.3...
    python-build: use readline from homebrew
    python-build: use zlib from xcode sdk
    
    BUILD FAILED (OS X 10.16 using python-build 20180424)
    
    Inspect or clean up the working tree at /var/folders/sl/5j1zvmtj0gb8qpgkklkf38dh0000gr/T/python-build.20200626170507.14625
    Results logged to /var/folders/sl/5j1zvmtj0gb8qpgkklkf38dh0000gr/T/python-build.20200626170507.14625.log
    
    Last 10 log lines:
    ./Modules/posixmodule.c:9141:12: note: forward declaration of 'struct sf_hdtr'
        struct sf_hdtr sf;
               ^
    ./Modules/posixmodule.c:9221:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
            ret = sendfile(in, out, offset, &sbytes, &sf, flags);
                  ^
    2 errors generated.
    make: *** [Modules/posixmodule.o] Error 1
    make: *** Waiting for unfinished jobs....
    1 warning generated.
    

    pyenv_install.log

    Note that MacOSX.sdk is symlinked to MacOSX10.16.sdk. Pointing the symlink to MacOSX10.15.sdk doesn't help.

    I didn't try switching to Xcode 11 yet, though that will probably help, if it's indeed a clang problem.

    Downloading and installing Python 3.8.3 from the website works fine (python3 executable).

    opened by Sjors 151
  • Python build fails on M1 Apple Silicon with arm64 homebrew

    Python build fails on M1 Apple Silicon with arm64 homebrew

    Referencing other issues, I've been trying unsuccessfully for a native compile of 3.9.0 on an M1 MacBook Air using the following:

    (FYI rosetta works without any issue with this config - goal is to compile both)

    .zshrc

    
    # PYENV
    ARCH=`arch`
    if [[ "${ARCH}"  == "arm64" ]]; then
        export PYENV_ROOT="/Users/rob/.pyenv/arm64"
    else
        export PYENV_ROOT="/Users/rob/.pyenv/rosetta"
    fi
    PYENV_BIN="$PYENV_ROOT/bin"
    export PYENV_SHELL=zsh
    # export PYENV_ROOT=$(pyenv root)
    # export PYENV_VERSION=$(pyenv version-name)
    export PYTHONPATH=$PYENV_ROOT/shims
    
    
    SDK_PATH="$(xcrun --show-sdk-path)"
    export CPATH="${SDK_PATH}/usr/include"
    export CFLAGS="-I${SDK_PATH}/usr/include/sasl $CFLAGS"
    export CFLAGS="-I${SDK_PATH}/usr/include $CFLAGS"
    export LDFLAGS="-L${SDK_PATH}/usr/lib $LDFLAGS"
    
    if [[ "${ARCH}"  == "arm64" ]]; then
        PREFIX="/opt/homebrew/opt"
    else
        PREFIX="/usr/local/opt"
    fi
    
    ZLIB="${PREFIX}/zlib"
    BZIP2="${PREFIX}/bzip2"
    READLINE="${PREFIX}/readline"
    SQLITE="${PREFIX}/sqlite"    
    OPENSSL="${PREFIX}/[email protected]"
    TCLTK="${PREFIX}/tcl-tk"
    PGSQL="${PREFIX}/[email protected]"
    LIBS=('ZLIB' 'BZIP2' 'READLINE' 'SQLITE' 'OPENSSL' 'PGSQL' 'TCLTK')
    
    for LIB in $LIBS; do
    
    	BINDIR="${(P)LIB}/bin"
    	if [ -d "${BINDIR}" ]; then
    		export PATH="${BINDIR}:$PATH"
    	fi
    
    	LIBDIR="${(P)LIB}/lib"
    	if [ -d "${LIBDIR}" ]; then
    		export LDFLAGS="-L${LIBDIR} $LDFLAGS"
    		export DYLD_LIBRARY_PATH="${LIBDIR}:$DYLD_LIBRARY_PATH"
    		PKGCFGDIR="${LIBDIR}/pkgconfig"
    		if [ -d "${PKGCFGDIR}" ]; then
    			export PKG_CONFIG_PATH="${PKGCFGDIR} $PKG_CONFIG_PATH"
    		fi
    	fi
    
    	INCDIR="${(P)LIB}/include"
    	if [ -d "${INCDIR}" ]; then
    		export CFLAGS="-I${INCDIR} $CFLAGS" 
    	fi
    
    done
    
    export CPPFLAGS="${CFLAGS}"
    export CXXFLAGS="${CFLAGS}"
    
    
    export PYTHON_CONFIGURE_OPTS="--enable-framework"
    export PYTHON_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl) ${PYTHON_CONFIGURE_OPTS}"
    export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I$(brew --prefix tcl-tk)/include' ${PYTHON_CONFIGURE_OPTS}"
    export PYTHON_CONFIGURE_OPTS="--with-tcltk-libs='-L$(brew --prefix tcl-tk)/lib -ltcl8.6 -ltk8.6' ${PYTHON_CONFIGURE_OPTS}"
    
    
    eval "$(pyenv init -)"
    # eval "$(pyenv virtualenv-init -)"
    
    

    Result:

    Here's the relevant output from pyenv install 3.8.6:

    configure: error: Unexpected output of 'arch' on OSX
    

    Environment

    > env|grep 'FLAGS\|PATH'
    PATH=/Users/rob/.pyenv/arm64/shims:/opt/homebrew/opt/tcl-tk/bin:/opt/homebrew/opt/[email protected]/bin:/opt/homebrew/opt/sqlite/bin:/opt/homebrew/opt/bzip2/bin:/Users/rob/bin:/Users/rob/.pyenv/arm64/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/Users/rob/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
    PYTHONPATH=/Users/rob/.pyenv/arm64/shims
    CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
    CFLAGS=-I/opt/homebrew/opt/tcl-tk/include -I/opt/homebrew/opt/[email protected]/include -I/opt/homebrew/opt/sqlite/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/bzip2/include -I/opt/homebrew/opt/zlib/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sasl
    LDFLAGS=-L/opt/homebrew/opt/tcl-tk/lib -L/opt/homebrew/opt/[email protected]/lib -L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/bzip2/lib -L/opt/homebrew/opt/zlib/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib
    PKG_CONFIG_PATH=/opt/homebrew/opt/tcl-tk/lib/pkgconfig /opt/homebrew/opt/[email protected]/lib/pkgconfig /opt/homebrew/opt/sqlite/lib/pkgconfig /opt/homebrew/opt/readline/lib/pkgconfig /opt/homebrew/opt/zlib/lib/pkgconfig
    CPPFLAGS=-I/opt/homebrew/opt/tcl-tk/include -I/opt/homebrew/opt/[email protected]/include -I/opt/homebrew/opt/sqlite/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/bzip2/include -I/opt/homebrew/opt/zlib/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sasl
    CXXFLAGS=-I/opt/homebrew/opt/tcl-tk/include -I/opt/homebrew/opt/[email protected]/include -I/opt/homebrew/opt/sqlite/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/bzip2/include -I/opt/homebrew/opt/zlib/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sasl```
    
    I know this is related to the compiler not recognizing `arm64` as architecture however the patches I've found don't solve the problem.
    opened by rjmoggach 91
  • ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    ➜ ~ pyenv install 3.5.2 Installing Python-3.5.2... patching file Lib/venv/scripts/posix/activate.fish ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    Please consult to the Wiki page to fix the problem. https://github.com/pyenv/pyenv/wiki/Common-build-problems

    BUILD FAILED (Deepin 15.4 using python-build 20160602)

    Inspect or clean up the working tree at /tmp/python-build.20170717074120.10900 Results logged to /tmp/python-build.20170717074120.10900.log

    Last 10 log lines: (cd /home/zonzely/.pyenv/versions/3.5.2/share/man/man1; ln -s python3.5.1 python3.1) if test "xupgrade" != "xno" ; then
    case upgrade in
    upgrade) ensurepip="--upgrade" ;;
    install|*) ensurepip="" ;;
    esac;
    ./python -E -m ensurepip
    $ensurepip --root=/ ;
    fi Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS

    opened by jingle0927 89
  • pyenv install fails to build 2.7.14 with ImportError: No module named pyexpat

    pyenv install fails to build 2.7.14 with ImportError: No module named pyexpat

    pyenv version: 1.2.0 MacOS 10.13.2 python-build version: 20160602

    I've run

    brew install readline xz and xcode-select --install

    I'm sourcing flags using the following

    export CFLAGS="-I$(xcrun --show-sdk-path)/usr/include"
    export CFLAGS="-I$(brew --prefix readline)/include $CFLAGS"
    export LDFLAGS="-L$(brew --prefix readline)/lib $LDFLAGS"
    export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
    export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"
    export PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig"
    

    When I run pyenv install 2.7.14 I get the following error

    Traceback (most recent call last):
      File "get-pip.py", line 20061, in <module>
        main()
      File "get-pip.py", line 194, in main
        bootstrap(tmpdir=tmpdir)
      File "get-pip.py", line 82, in bootstrap
        import pip
      File "/var/folders/t5/4dd3lpyj50j05f9xn49hzj8n8mjnmf/T/tmpXrOLYp/pip.zip/pip/__init__.py", line 26, in <module>
      File "/var/folders/t5/4dd3lpyj50j05f9xn49hzj8n8mjnmf/T/tmpXrOLYp/pip.zip/pip/utils/__init__.py", line 27, in <module>
      File "/var/folders/t5/4dd3lpyj50j05f9xn49hzj8n8mjnmf/T/tmpXrOLYp/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 1027, in <module>
      File "/var/folders/t5/4dd3lpyj50j05f9xn49hzj8n8mjnmf/T/tmpXrOLYp/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 1030, in Environment
      File "/var/folders/t5/4dd3lpyj50j05f9xn49hzj8n8mjnmf/T/tmpXrOLYp/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 272, in get_supported_platform
      File "/var/folders/t5/4dd3lpyj50j05f9xn49hzj8n8mjnmf/T/tmpXrOLYp/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 444, in _macosx_vers
      File "/usr/local/opt/pyenv/versions/2.7.14/lib/python2.7/platform.py", line 764, in mac_ver
        info = _mac_ver_xml()
      File "/usr/local/opt/pyenv/versions/2.7.14/lib/python2.7/platform.py", line 741, in _mac_ver_xml
        pl = plistlib.readPlist(fn)
      File "/usr/local/opt/pyenv/versions/2.7.14/lib/python2.7/plistlib.py", line 78, in readPlist
        rootObject = p.parse(pathOrFile)
      File "/usr/local/opt/pyenv/versions/2.7.14/lib/python2.7/plistlib.py", line 401, in parse
        from xml.parsers.expat import ParserCreate
      File "/usr/local/opt/pyenv/versions/2.7.14/lib/python2.7/xml/parsers/expat.py", line 4, in <module>
        from pyexpat import *
    ImportError: No module named pyexpat
    
    impl: cpython os: macOS third-party 
    opened by justinjdickow 80
  • Install failed,

    Install failed, "zlib not available" on macOS Mojave

    Description

    • [x] Platform information (e.g. Ubuntu Linux 16.04): macOS Mojave 10.14
    • [x] OS architecture (e.g. amd64):amd64
    • [x] pyenv version: 1.2.7
    • [x] Python version: 3.7.0 & 2.7.15
    • [x] C Compiler information (e.g. gcc 7.3): Apple LLVM version 10.0.0 (clang-1000.11.45.2)
    • [ ] Please attach verbose build log as gist

    see https://github.com/Homebrew/homebrew-core/issues/29176#issuecomment-398656987

    Temporary workaround:

    CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install ...
    
    os: macOS 
    opened by tshu-w 59
  • Python 3.7.0 :: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    Python 3.7.0 :: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    Platform: macOS High Sierra 10.13.5 Pyenv version: Install by git clone Python: 3.7.0 OpenSSL version: 1.0.2o_2 (installed from brew)

    tricks below doesn't works for me:

    CFLAGS="-I$(brew --prefix openssl)/include" \
    LDFLAGS="-L$(brew --prefix openssl)/lib" \
    pyenv install -v 3.7.0
    
    opened by rmerkushin 57
  • Latest changes have made unattended installation impossible

    Latest changes have made unattended installation impossible

    I love this project, but the latest changes have made the unattended installation of pyenv impossible.

    I have a bash script that installs it unattended like this:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >>~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >>~/.bash_profile
    echo 'eval "$(pyenv init -)"' >>~/.bash_profile
    echo 'export PYTHONPATH=:"$HOME/tegant/app"' >>~/.bash_profile
    git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
    echo 'eval "$(pyenv virtualenv-init -)"' >>~/.bash_profile
    . ~/.bash_profile
    pyenv install 3.9.4
    pyenv virtualenv 3.9.4 venv
    pyenv activate venv
    

    But the latest version of pyenv doesn't allow eval "$(pyenv init -). Now it's supposed to be done like echo 'eval "$(pyenv init --path)"' >>~/.profile. But the documentation doesn't quite explain that.

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >>~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >>~/.bash_profile
    echo 'eval "$(pyenv init --path)"' >>~/.profile
    echo 'export PYTHONPATH=:"$HOME/tegant/app"' >>~/.bash_profile
    git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
    echo 'eval "$(pyenv virtualenv-init -)"' >>~/.bash_profile
    . ~/.profile
    . ~/.bash_profile
    pyenv install 3.9.4
    pyenv virtualenv 3.9.4 venv
    pyenv activate venv
    

    So when I try to activate the venv inside shell I get an error thrown:

    Failed to activate virtualenv.
    
    Perhaps pyenv-virtualenv has not been loaded into your shell properly.
    Please restart current shell and try again.
    

    Description

    • [X] Platform information: Debian 10.9
    • [X ] OS architecture (e.g. amd64): AWS Ec2 t3.micro
    • [X ] pyenv version: 1.2.27-29-gfd3c891d
    • [X ] Python version: 3.9.4
    • [X ] C Compiler information: gcc (Debian 8.3.0-6) 8.3.0
    opened by tegant 55
  • $ pyenv global system does not work

    $ pyenv global system does not work

    This does not work

    [email protected]: ~
    $ pyenv versions
      system
    * 3.4.2 (set by /Users/shishir/.pyenv/version)
    [email protected]: ~
    $ pyenv global system
    pyenv: version `system' not installed
    [email protected]: ~
    $ pyenv 
    pyenv 20150204
    Usage: pyenv <command> [<args>]
    
    Some useful pyenv commands are:
       commands    List all available pyenv commands
       local       Set or show the local application-specific Python version
       global      Set or show the global Python version
       shell       Set or show the shell-specific Python version
       install     Install a Python version using python-build
       uninstall   Uninstall a specific Python version
       rehash      Rehash pyenv shims (run this after installing executables)
       version     Show the current Python version and its origin
       versions    List all Python versions available to pyenv
       which       Display the full path to an executable
       whence      List all Python versions that contain the given executable
    
    See `pyenv help <command>' for information on a specific command.
    For full documentation, see: https://github.com/yyuu/pyenv#readme
    
    
    opened by shishirsharma 52
  • pyenv not playing nice with brew

    pyenv not playing nice with brew "config". [$5]

    I installed python 2.7.6 and python 3.3.3 with pyenv.

    Now when I run brew doctor I get the following warning:

    Warning: "config" scripts exist outside your system or Homebrew directories.
    `./configure` scripts often look for *-config scripts to determine if
    software packages are installed, and what additional flags to use when
    compiling and linking.
    
    Having additional scripts in your path can confuse software installed via
    Homebrew if the config script overrides a system or Homebrew provided
    script of the same name. We found the following "config" scripts:
    
        /Users/insomniac/.pyenv/shims/python-config
        /Users/insomniac/.pyenv/shims/python2-config
        /Users/insomniac/.pyenv/shims/python2.7-config
        /Users/insomniac/.pyenv/shims/python3-config
        /Users/insomniac/.pyenv/shims/python3.3-config
        /Users/insomniac/.pyenv/shims/python3.3m-config
    

    How can this be fixed so it plays nice with brew? C.

    --- There is a **[$5 open bounty](https://www.bountysource.com/issues/2813423-pyenv-not-playing-nice-with-brew-config?utm_campaign=plugin&utm_content=tracker%2F282009&utm_medium=issues&utm_source=github)** on this issue. Add to the bounty at [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F282009&utm_medium=issues&utm_source=github). type: bug duplicate bounty 
    opened by carolyn-idi 50
  • Pyenv shim spam breaks $PATH, scripts

    Pyenv shim spam breaks $PATH, scripts

    In addition to shadowing—and therefore breaking—programs installed on the system $PATH with its shims, pyenv also breaks if hash progname; then ... tests.

    If a program isn't installed system-wide, but is installed in a venv, the pyenv shim causes the test to erroneously pass, and of course subsequently running the program results in a "hurr durr, this command exists in these Python versions…" error message when a pyenv shim gets run instead of the real program.

    The former issue (not calling existing programs) can be worked around with an extension, but AFAIK the latter can't.

    Is there a solution to this problem?

    pyenv is darn handy for managing venvs and Python versions. A completely borked $PATH is not a price worth paying, however.

    area: shims 
    opened by deanishe 43
  • pyenv global x.x.x not changing the python version

    pyenv global x.x.x not changing the python version

    Installed pyenv using homebrew and so far i've had no luck getting pyenv to switch python versions. These are the steps I took:

    $ brew install pyenv (successful)
    $ pyenv install 3.5.2 (successful)
    $ python --version
    Python 2.7.11
    $ pyenv global 3.5.2
    $ python --version
    Python 2.7.11
    
    $ echo $PATH
    /opt/local/bin:/opt/local/sbin:/Users/Eli/.rvm/gems/ruby-2.2.1/bin:/Users/Eli/.rvm/gems/[email protected]/bin:/Users/Eli/.rvm/rubies/ruby-2.2.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Users/Eli/.rvm/bin
    
    
    opened by ghost 43
  • curl  from snap package does not work

    curl from snap package does not work

    Short description

    Curl library from the snap package manager prompts an error right after trying to install a python version

    curl: (23) Failure writing output to destination

    Description

    As this is a non-python related I am not adding the error from the debbuger option you recommend for the issues.

    • [ ] Platform Xubuntu 22.04.1
    • [ ] OS architecture (e.g. amd64):
    • [ ] pyenv version: 2.3.9
    • [ ] Python version: 3.10.6 (global) and 3.11.1 (installing target)

    Sources to solve this problem

    askubuntu link

    opened by ehlui 0
  • How to disable --enable-shared?

    How to disable --enable-shared?

    Prerequisite

    • [X] Make sure your problem is not listed in the common build problems.
    • [X] Make sure no duplicated issue has already been reported in the pyenv issues. You should look for closed issues, too.
    • [X] Make sure you are not asking us to help solving your specific issue.
      • GitHub issues is opened mainly for development purposes. If you want to ask someone to help solving your problem, go to some community site like Gitter, StackOverflow, etc.
    • [X] Make sure your problem is not derived from packaging (e.g. Homebrew).
      • Please refer to the package documentation for the installation issues, etc.
    • [X] Make sure your problem is not derived from plugins.
      • This repository is maintaining pyenv and the default python-build plugin only. Please refrain from reporting issues of other plugins here.

    Description

    • [X] Platform information (e.g. Ubuntu Linux 16.04): Amazon Linux 2
    • [X] OS architecture (e.g. amd64): x86_64
    • [X] pyenv version: v2.3.9
    • [X] Python version: 3.9.9
    • [X] C Compiler information (e.g. gcc 7.3): gcc.x86_64 7.3.1-15.amzn2
    • [X] Please attach the debug trace of the failing command as a gist:
      • Run env PYENV_DEBUG=1 <faulty command> 2>&1 | tee trace.log and attach trace.log. E.g. if you have a problem with installing Python, run env PYENV_DEBUG=1 pyenv install -v <version> 2>&1 | tee trace.log (note the -v option to pyenv install).
      • trace.log (using latest head)
        • checking for --enable-shared... yes
      • trace2.log (using release v2.3.9)
        • checking for --enable-shared... no

    I am using pyenv to install Python3.9.9 and create a portable virtual environment (using venv and venv-pack). This has been working fine for quite some time, until the recent --enable-shared change to pyenv makes the Python binary shrink in size resulting in downstream errors where I am trying to use the packaged portable environment - ./environment/bin/python: error while loading shared libraries: libpython3.9.so.1.0: cannot open shared object file: No such file or directory.

    The python binary shrinks in size, as shown below-

    Using pyenv release 2.3.9, the Python binary is 18MB

    bash-4.2# export PYENV_GIT_TAG=v2.3.9
    bash-4.2# curl https://pyenv.run | bash
    ...
    bash-4.2# pyenv install 3.9.9
    Downloading Python-3.9.9.tar.xz...
    -> https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz
    Installing Python-3.9.9...
    Installed Python-3.9.9 to /usr/local/bin/.pyenv/versions/3.9.9
    
    bash-4.2# ls -arilh /usr/local/bin/.pyenv/versions/3.9.9/bin/python3.9
    22647967 -rwxr-xr-x 1 root root 18M Jan  3 03:16 /usr/local/bin/.pyenv/versions/3.9.9/bin/python3.9
    

    Using automatic installer without setting PYENV_GIT_TAG, the Python binary is 26KB

    bash-4.2# rm -rf /usr/local/bin/.pyenv
    bash-4.2# export PYENV_GIT_TAG=""
    bash-4.2# curl https://pyenv.run | bash
    ...
    bash-4.2# pyenv install 3.9.9
    Downloading Python-3.9.9.tar.xz...
    -> https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz
    Installing Python-3.9.9...
    Installed Python-3.9.9 to /usr/local/bin/.pyenv/versions/3.9.9
    
    bash-4.2# ls -arilh /usr/local/bin/.pyenv/versions/3.9.9/bin/python3.9
    22648006 -rwxr-xr-x 1 root root 26K Jan  3 03:44 /usr/local/bin/.pyenv/versions/3.9.9/bin/python3.9
    

    The responsible change for this changed behaviour seems to be https://github.com/pyenv/pyenv/pull/2554 (--enable-shared by default). Is there a way to unset the --enable-shared flag? If not, would it be supported by pyenv in the future?

    opened by nihal111 0
  • Installing 2.7.18 on a macOS with existing system 2.7.16 will actually yield 2.7.16

    Installing 2.7.18 on a macOS with existing system 2.7.16 will actually yield 2.7.16

    On a macOS 11 system (specifically, a GitHub Actions macos-11 runner) that has a system Python version 2.7.16, running pyenv install 2.7.18 will succeed. But when you run that 2.7.18 (.pyenv/versions/2.7.18/bin/python) you actually get the 2.7.16 interpreter!

    $ .pyenv/versions/2.7.18/bin/python
    
    WARNING: Python 2.7 is not recommended. 
    This version is included in macOS for compatibility with legacy software. 
    Future versions of macOS will not include Python 2.7. 
    Instead, it is recommended that you transition to using 'python3' from within Terminal.
    
    Python 2.7.16 (default, Aug 29 2022, 10:34:32) 
    [GCC Apple LLVM 12.0.5 (clang-1205.0.19.59.6) [+internal-os, ptrauth-isa=deploy on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    

    I have bisected this to this commit.

    I'd offer a fix, but I don't really understand what is going on here.

    To access a system that reproduces this, run this github action, and follow the instructions it emits to SSH to the runner:

    name: CI
    on: [push, pull_request]
    defaults:
      run:
        shell: bash
    jobs:
      build:
        runs-on: macos-11
        steps:
          - name: Setup upterm session
            uses: lhotari/[email protected]
    

    I'm also happy to test out a fix.


    Too many issues will kill our team's development velocity, drastically. Make sure you have checked all steps below.

    Prerequisite

    • [x] Make sure your problem is not listed in the common build problems.
    • [x] Make sure no duplicated issue has already been reported in the pyenv issues. You should look for closed issues, too.
    • [x] Make sure you are not asking us to help solving your specific issue.
      • GitHub issues is opened mainly for development purposes. If you want to ask someone to help solving your problem, go to some community site like Gitter, StackOverflow, etc.
    • [x] Make sure your problem is not derived from packaging (e.g. Homebrew).
      • Please refer to the package documentation for the installation issues, etc.
    • [x] Make sure your problem is not derived from plugins.
      • This repository is maintaining pyenv and the default python-build plugin only. Please refrain from reporting issues of other plugins here.

    Description

    • [x] Platform information (e.g. Ubuntu Linux 16.04): macOS 11
    • [x] OS architecture (e.g. amd64): x86_64
    • [x] pyenv version: 2.3.9
    • [x] Python version: 2.7.18
    • [x] C Compiler information (e.g. gcc 7.3): Apple clang version 13.0.0 (clang-1300.0.29.30)
    • [x] Please attach the debug trace of the failing command as a gist:
      • Run env PYENV_DEBUG=1 <faulty command> 2>&1 | tee trace.log and attach trace.log. E.g. if you have a problem with installing Python, run env PYENV_DEBUG=1 pyenv install -v <version> 2>&1 | tee trace.log (note the -v option to pyenv install): NA, no command is failing, but the result is broken.
    opened by benjyw 0
  • import hashlib throwing error on pyenv installation of python 3.11

    import hashlib throwing error on pyenv installation of python 3.11

    Too many issues will kill our team's development velocity, drastically. Make sure you have checked all steps below.

    Prerequisite

    • [x] Make sure your problem is not listed in the common build problems.
    • [x] Make sure no duplicated issue has already been reported in the pyenv issues. You should look for closed issues, too.
    • [x] Make sure you are not asking us to help solving your specific issue.
      • GitHub issues is opened mainly for development purposes. If you want to ask someone to help solving your problem, go to some community site like Gitter, StackOverflow, etc.
    • [x] Make sure your problem is not derived from packaging (e.g. Homebrew).
      • Please refer to the package documentation for the installation issues, etc.
    • [x] Make sure your problem is not derived from plugins.
      • This repository is maintaining pyenv and the default python-build plugin only. Please refrain from reporting issues of other plugins here.

    Description

    • [x] Platform information (e.g. Ubuntu Linux 16.04): MacOS Ventura 13.1 (22C65)
    • [x] OS architecture (e.g. amd64): arm64 (M1)
    • [x] pyenv version: 2.3.9
    • [x] Python version: 3.11.0, 3.11.1
    • [x] C Compiler information (e.g. gcc 7.3): Apple clang version 14.0.0 (clang-1400.0.29.202)
    • [x] Please attach the debug trace of the failing command as a gist: pyenv install 3.11 --force trace.log
      • Run env PYENV_DEBUG=1 <faulty command> 2>&1 | tee trace.log and attach trace.log. E.g. if you have a problem with installing Python, run env PYENV_DEBUG=1 pyenv install -v <version> 2>&1 | tee trace.log (note the -v option to pyenv install).

    After installing 3.11.1 with the pyenv install 3.11.1 command and then switching to 3.11.1 with pyenv shell 3.11.1, I get the following error when running pip --version

    ERROR:root:code for hash blake2b was not found.
    Traceback (most recent call last):
      File "/Users/Brandon/.pyenv/versions/3.11.1/lib/python3.11/hashlib.py", line 307, in <module>
        globals()[__func_name] = __get_hash(__func_name)
                                 ^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/Brandon/.pyenv/versions/3.11.1/lib/python3.11/hashlib.py", line 129, in __get_openssl_constructor
        return __get_builtin_constructor(name)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/Brandon/.pyenv/versions/3.11.1/lib/python3.11/hashlib.py", line 123, in __get_builtin_constructor
        raise ValueError('unsupported hash type ' + name)
    ValueError: unsupported hash type blake2b
    ERROR:root:code for hash blake2s was not found.
    Traceback (most recent call last):
      File "/Users/Brandon/.pyenv/versions/3.11.1/lib/python3.11/hashlib.py", line 307, in <module>
        globals()[__func_name] = __get_hash(__func_name)
                                 ^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/Brandon/.pyenv/versions/3.11.1/lib/python3.11/hashlib.py", line 129, in __get_openssl_constructor
        return __get_builtin_constructor(name)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/Users/Brandon/.pyenv/versions/3.11.1/lib/python3.11/hashlib.py", line 123, in __get_builtin_constructor
        raise ValueError('unsupported hash type ' + name)
    ValueError: unsupported hash type blake2s
    pip 22.3.1 from /Users/Brandon/.pyenv/versions/3.11.1/lib/python3.11/site-packages/pip (python 3.11)
    

    This can also occur anytime import hashlib is called from within python.

    No issues seen when using pyenv installed python versions 3.8.16, 3.9.16, or 3.10.9 No issues seen when python 3.11 is installed using brew install [email protected]

    opened by bsteiger 1
  • 2.3.9 Regression in pyenv-latest

    2.3.9 Regression in pyenv-latest

    pyenv 2.3.9

    pyenv install 3.6:latest

    python-build: definition not found: 3.6:latest See all available versions with `pyenv install --list'.

    After installing pyenv with curl https://pyenv.run | bash the latest release will not install python versions using the latest tag. This is showing up on an aarach64 ubuntu 20.04 image.

    Workaround: Downgrade to pyenv v2.3.8 and everything works as expected

    export PYENV_GIT_TAG=v2.3.8
    curl https://pyenv.run | bash
    

    Prerequisite

    • [X] Make sure your problem is not listed in the common build problems.
    • [X] Make sure no duplicated issue has already been reported in the pyenv issues. You should look for closed issues, too.
    • [X] Make sure you are not asking us to help solving your specific issue.
      • GitHub issues is opened mainly for development purposes. If you want to ask someone to help solving your problem, go to some community site like Gitter, StackOverflow, etc.
    • [X] Make sure your problem is not derived from packaging (e.g. Homebrew).
      • Please refer to the package documentation for the installation issues, etc.
    • [X] Make sure your problem is not derived from plugins.
      • This repository is maintaining pyenv and the default python-build plugin only. Please refrain from reporting issues of other plugins here.

    Description

    • [X] Platform information (e.g. Ubuntu Linux 16.04): Ubuntu 20.04
    • [X] OS architecture (e.g. amd64): aarach64
    • [X] pyenv version: 2.3.9
    • [X] Python version: 3.8.10
    • [X] C Compiler information (e.g. gcc 7.3): gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
    • [X] Please attach the debug trace of the failing command as a gist:
      • Run env PYENV_DEBUG=1 <faulty command> 2>&1 | tee trace.log and attach trace.log. E.g. if you have a problem with installing Python, run env PYENV_DEBUG=1 pyenv install -v <version> 2>&1 | tee trace.log (note the -v option to pyenv install).
      • https://gist.github.com/willgleich/3235f0a282b139761b8dbf2dc2c9af8c

    Workaround: Downgrade to pyenv v2.3.8 and everything works as expected

    export PYENV_GIT_TAG=v2.3.8
    curl https://pyenv.run | bash
    
    opened by willgleich 0
Releases(v2.3.9)
  • v2.3.9(Dec 19, 2022)

    What's Changed

    • Add -latest suffix to miniforge3 by @nwh in https://github.com/pyenv/pyenv/pull/2551
    • Add PyPy 7.3.10 by @dand-oss in https://github.com/pyenv/pyenv/pull/2553
    • Add miniforge3 and mambaforge 22.9.0-2 by @smcgivern in https://github.com/pyenv/pyenv/pull/2559
    • Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.16 by @lisbethw1130 in https://github.com/pyenv/pyenv/pull/2558
    • Add openssl patches for 3.7.15, 3.7.16, and 3.8.16 by @samdoran in https://github.com/pyenv/pyenv/pull/2564
    • Add support for Anaconda3-2022.10 by @huypn12 in https://github.com/pyenv/pyenv/pull/2565

    New Contributors

    • @nwh made their first contribution in https://github.com/pyenv/pyenv/pull/2551
    • @smcgivern made their first contribution in https://github.com/pyenv/pyenv/pull/2559
    • @lisbethw1130 made their first contribution in https://github.com/pyenv/pyenv/pull/2558
    • @huypn12 made their first contribution in https://github.com/pyenv/pyenv/pull/2565

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.8...v2.3.9

    Source code(tar.gz)
    Source code(zip)
  • v2.3.8(Dec 8, 2022)

    What's Changed

    • Export detected shell environment in pyenv-init by @ianchen-tw in https://github.com/pyenv/pyenv/pull/2540
    • Add CPython 3.12.0a3 by @saaketp in https://github.com/pyenv/pyenv/pull/2545
    • Add CPython 3.11.1 by @anton-petrov in https://github.com/pyenv/pyenv/pull/2549
    • Add CPython 3.10.9 by @rudisimo in https://github.com/pyenv/pyenv/pull/2544
    • Add 3.7.16, 3.8.16, 3.9.16 by @chadac in https://github.com/pyenv/pyenv/pull/2550

    New Contributors

    • @ianchen-tw made their first contribution in https://github.com/pyenv/pyenv/pull/2540
    • @rudisimo made their first contribution in https://github.com/pyenv/pyenv/pull/2544
    • @chadac made their first contribution in https://github.com/pyenv/pyenv/pull/2550

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.7...v2.3.8

    Source code(tar.gz)
    Source code(zip)
  • v2.3.7(Dec 1, 2022)

    What's Changed

    • Add Python version 3.11 to the macOS build by @jbkkd in https://github.com/pyenv/pyenv/pull/2510
    • Don't use Zlib from XCode SDK if a custom compiler is used by @native-api in https://github.com/pyenv/pyenv/pull/2516
    • Change line endings from CRLF to LF by @hoang-himself in https://github.com/pyenv/pyenv/pull/2517
    • Fix resolution of a name that's a prefix of another name by @native-api in https://github.com/pyenv/pyenv/pull/2521
    • GitHub Workflows security hardening by @sashashura in https://github.com/pyenv/pyenv/pull/2511
    • Add nushell to activate list by @theref in https://github.com/pyenv/pyenv/pull/2524
    • Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.15 and 3.8.15 by @twangboy in https://github.com/pyenv/pyenv/pull/2520
    • Add simple .editorconfig file by @aphedges in https://github.com/pyenv/pyenv/pull/2518
    • Support aria2c being a snap by @native-api in https://github.com/pyenv/pyenv/pull/2528
    • Add CPython 3.12.0a2 by @saaketp in https://github.com/pyenv/pyenv/pull/2527
    • Add --no-push-path option by @isaacl in https://github.com/pyenv/pyenv/pull/2526
    • Fix typo in README.md by @weensy in https://github.com/pyenv/pyenv/pull/2535
    • Copy auto installer oneliner to readme by @spookyuser in https://github.com/pyenv/pyenv/pull/2538

    New Contributors

    • @jbkkd made their first contribution in https://github.com/pyenv/pyenv/pull/2510
    • @hoang-himself made their first contribution in https://github.com/pyenv/pyenv/pull/2517
    • @sashashura made their first contribution in https://github.com/pyenv/pyenv/pull/2511
    • @theref made their first contribution in https://github.com/pyenv/pyenv/pull/2524
    • @twangboy made their first contribution in https://github.com/pyenv/pyenv/pull/2520
    • @isaacl made their first contribution in https://github.com/pyenv/pyenv/pull/2526
    • @weensy made their first contribution in https://github.com/pyenv/pyenv/pull/2535
    • @spookyuser made their first contribution in https://github.com/pyenv/pyenv/pull/2538

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.6...v2.3.7

    Source code(tar.gz)
    Source code(zip)
  • v2.3.6(Nov 3, 2022)

    What's Changed

    • Add CPython 3.10.8 (#2480)
    • Add CPython 3.7.15, 3.8.15, and 3.9.15 (#2482)
    • Add CPython 3.11.0 (#2493)
    • Add CPython 3.12.0a1 (#2495)
    • Add graalpy-22.3.0 (#2497)
    • Auto-resolve prefixes to the latest version (#2487)
      • It must be a full prefix -- the actual searched prefix is <prefix>[-.]
      • Other flavors are likely sorted incorrectly atm
      • Prereleases and versions with some suffixes (-dev, -src, -latest) are not searched
      • pyenv uninstall has been excluded from the resolution feature: deleting a dynamically selected installation could be problematic
    • Fix OpenSSL 1.1.1q compilation error in MacOS 11+ (#2500)
    • Link to Tcl/Tk from Homebrew via pkgconfig for 3.11+ (#2501)
    • Fix syntax error in pyenv init - if PYENV_ROOT has spaces (#2506)

    New Contributors

    • @MuXodious made their first contribution in https://github.com/pyenv/pyenv/pull/2480
    • @adamchainz made their first contribution in https://github.com/pyenv/pyenv/pull/2482
    • @noamcohen97 made their first contribution in https://github.com/pyenv/pyenv/pull/2493
    • @playpauseandstop made their first contribution in https://github.com/pyenv/pyenv/pull/2496
    • @amureki made their first contribution in https://github.com/pyenv/pyenv/pull/2503

    Sponsors

    For the first time, we've used your donated money to fund the project's development. In particular, to implement the most requested feature, Auto-resolve prefixes to the latest version.

    As such, we're finally giving the long-overdue credit to our generous sponsors! Thank you, guys, for making this possible!

    @samuelcolvin, @deronnax, @subecho, @getsentry, @thijsmie, @jgigliotti, @9bow, @gabrielmbmb, @xoflare, @codingjoe, 38elements, Pedro R., @digglife, @bburtin, @stall84, @0x962, @danchev, @atr0phy, @iamjinlei0312

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.5...v2.3.6

    Source code(tar.gz)
    Source code(zip)
  • v2.3.5(Oct 8, 2022)

    What's Changed

    • Add CPython 3.10.7 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2454
    • Docs: update Fish PATH update by @gregorias in https://github.com/pyenv/pyenv/pull/2449
    • Add CPython 3.7.14, 3.8.14 and 3.9.14 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2456
    • Update miniconda3-3.9-4.12.0 by @Tsuki in https://github.com/pyenv/pyenv/pull/2460
    • Add CPython 3.11.0rc2 by @ViktorHaag in https://github.com/pyenv/pyenv/pull/2459
    • Add patches for 3.7.14 to support Apple Silicon by @samdoran in https://github.com/pyenv/pyenv/pull/2463
    • Add ability to easily skip all use of Homebrew by @samdoran in https://github.com/pyenv/pyenv/pull/2464
    • Drop Travis integration by @sobolevn in https://github.com/pyenv/pyenv/pull/2468
    • Build CPython 3.12+ with --with-dsymutil in MacOS by @native-api in https://github.com/pyenv/pyenv/pull/2471
    • Add Pyston 2.3.5 by @scop in https://github.com/pyenv/pyenv/pull/2476

    New Contributors

    • @gregorias made their first contribution in https://github.com/pyenv/pyenv/pull/2449
    • @Tsuki made their first contribution in https://github.com/pyenv/pyenv/pull/2460
    • @ViktorHaag made their first contribution in https://github.com/pyenv/pyenv/pull/2459
    • @sobolevn made their first contribution in https://github.com/pyenv/pyenv/pull/2468

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.4...v2.3.5

    Source code(tar.gz)
    Source code(zip)
  • v2.3.4(Sep 3, 2022)

    What's Changed

    • Add CPython 3.11.0rc1 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2434
    • Add support for multiple versions in pyenv uninstall by @hardikpnsp in https://github.com/pyenv/pyenv/pull/2432
    • Add micropython 1.18 and 1.19.1 by @dmitriy-serdyuk in https://github.com/pyenv/pyenv/pull/2443
    • CI: support Micropython, deleted scripts; build with -v by @native-api in https://github.com/pyenv/pyenv/pull/2447
    • Re-allow paths in .python-version while still preventing CVE-2022-35861 by @comrumino in https://github.com/pyenv/pyenv/pull/2442
    • CI: Bump OS versions by @native-api in https://github.com/pyenv/pyenv/pull/2448
    • Add Cinder 3.8 by @filips123 in https://github.com/pyenv/pyenv/pull/2433

    New Contributors

    • @janithpet made their first contribution in https://github.com/pyenv/pyenv/pull/2431
    • @hardikpnsp made their first contribution in https://github.com/pyenv/pyenv/pull/2432
    • @dmitriy-serdyuk made their first contribution in https://github.com/pyenv/pyenv/pull/2443
    • @filips123 made their first contribution in https://github.com/pyenv/pyenv/pull/2433

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.3...v2.3.4

    Source code(tar.gz)
    Source code(zip)
  • v2.3.3(Aug 2, 2022)

    What's Changed

    • Use version sort in pyenv versions by @fofoni in https://github.com/pyenv/pyenv/pull/2405
    • Add CPython 3.11.0b4 by @majorgreys in https://github.com/pyenv/pyenv/pull/2411
    • Python-build: Replace deprecated git protocol use with https in docs by @ssbarnea in https://github.com/pyenv/pyenv/pull/2413
    • Fix relative path traversal due to using version string in path by @comrumino in https://github.com/pyenv/pyenv/pull/2412
    • Allow pypy2 and pypy3 patching by @brogon in https://github.com/pyenv/pyenv/pull/2421, https://github.com/pyenv/pyenv/pull/2419
    • Add CPython 3.11.0b5 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2420
    • Add GraalPython 22.2.0 by @msimacek in https://github.com/pyenv/pyenv/pull/2425
    • Add CPython 3.10.6 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2428

    New Contributors

    • @majorgreys made their first contribution in https://github.com/pyenv/pyenv/pull/2411
    • @ssbarnea made their first contribution in https://github.com/pyenv/pyenv/pull/2413
    • @comrumino made their first contribution in https://github.com/pyenv/pyenv/pull/2412
    • @brogon made their first contribution in https://github.com/pyenv/pyenv/pull/2419

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.2...v2.3.3

    Source code(tar.gz)
    Source code(zip)
  • v2.3.2(Jun 30, 2022)

    What's Changed

    • Add CPython 3.11.0b2 by @saaketp in https://github.com/pyenv/pyenv/pull/2380
    • Honor CFLAGS_EXTRA for MicroPython #2006 by @yggdr in https://github.com/pyenv/pyenv/pull/2007
    • Add post-install checks for curses, ctypes, lzma, and tkinter by @aphedges in https://github.com/pyenv/pyenv/pull/2353
    • Add CPython 3.11.0b3 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2382
    • Add flags for Homebrew into python-config --ldflags by @native-api in https://github.com/pyenv/pyenv/pull/2384
    • Add CPython 3.10.5 by @illia-v in https://github.com/pyenv/pyenv/pull/2386
    • Add Anaconda 2019.10, 2021.04, 2022.05; support Anaconda in add_miniconda.py by @native-api in https://github.com/pyenv/pyenv/pull/2385
    • Add Pyston-2.3.4 by @dand-oss in https://github.com/pyenv/pyenv/pull/2390
    • Update Anaconda3-2022.05 MacOSX arm64 md5 by @bkbncn in https://github.com/pyenv/pyenv/pull/2391

    New Contributors

    • @yggdr made their first contribution in https://github.com/pyenv/pyenv/pull/2007

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.1...v2.3.2

    Source code(tar.gz)
    Source code(zip)
  • v2.3.1(May 29, 2022)

    What's Changed

    • Version file read improvements by @scop in https://github.com/pyenv/pyenv/pull/2269
    • Add CPython 3.11.0b1 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2358
    • Update 3.11-dev and add 3.12-dev by @hugovk in https://github.com/pyenv/pyenv/pull/2361
    • Add CPython 3.9.13 by @mkniewallner in https://github.com/pyenv/pyenv/pull/2372
    • Add miniconda 4.12.0 by @aphedges in https://github.com/pyenv/pyenv/pull/2371
    • Fix endless loop in pyenv init - under SSH in some shell setups by @native-api in https://github.com/pyenv/pyenv/pull/2374
    • CI: Add tests for modified Python build scripts by @tuzi3040 in https://github.com/pyenv/pyenv/pull/2286

    New Contributors

    • @sadikkuzu made their first contribution in https://github.com/pyenv/pyenv/pull/2355
    • @edgarrmondragon made their first contribution in https://github.com/pyenv/pyenv/pull/2358
    • @hugovk made their first contribution in https://github.com/pyenv/pyenv/pull/2361
    • @mkniewallner made their first contribution in https://github.com/pyenv/pyenv/pull/2372

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.3.0...v2.3.1

    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(May 4, 2022)

    What's Changed

    • Bump openssl 1.1 to 1.1.1n for CPython 3.7 3.8 3.9 by @tuzi3040 in https://github.com/pyenv/pyenv/pull/2276
    • Doc Fix: Escape a hash character causing unwanted GitHub Issue linking by @edrogers in https://github.com/pyenv/pyenv/pull/2282
    • Add CPython 3.9.12 by @saaketp in https://github.com/pyenv/pyenv/pull/2296
    • Add CPython 3.10.4 by @saaketp in https://github.com/pyenv/pyenv/pull/2295
    • Add patch for 3.6.15 to support Xcode 13.3 by @nshine in https://github.com/pyenv/pyenv/pull/2288
    • Add patch for 3.7.12 to support Xcode 13.3 by @samdoran in https://github.com/pyenv/pyenv/pull/2292
    • Add CONTRIBUTING.md by @native-api in https://github.com/pyenv/pyenv/pull/2287
    • Add PyPy 7.3.9 release 2022-03-30 by @dand-oss in https://github.com/pyenv/pyenv/pull/2308
    • Add Pyston 2.3.3 by @scop in https://github.com/pyenv/pyenv/pull/2316
    • Add CPython 3.11.0a7 by @illia-v in https://github.com/pyenv/pyenv/pull/2315
    • Add "nogil" Python v3.9.10 by @colesbury in https://github.com/pyenv/pyenv/pull/2342
    • Support XCode 13.3 in all releases that officially support MacOS 11 by @native-api in https://github.com/pyenv/pyenv/pull/2344
    • Add GraalPython 22.1.0 by @msimacek in https://github.com/pyenv/pyenv/pull/2346
    • Make PYENV_DEBUG imply -v for pyenv install by @native-api in https://github.com/pyenv/pyenv/pull/2347
    • Simplify init scheme by @native-api in https://github.com/pyenv/pyenv/pull/2310
    • Don't use Homebrew outside of MacOS by @native-api in https://github.com/pyenv/pyenv/pull/2349
    • Add :latest syntax to documentation for the install command by @hay in https://github.com/pyenv/pyenv/pull/2351

    New Contributors

    • @edrogers made their first contribution in https://github.com/pyenv/pyenv/pull/2282
    • @nshine made their first contribution in https://github.com/pyenv/pyenv/pull/2288
    • @samdoran made their first contribution in https://github.com/pyenv/pyenv/pull/2292
    • @colesbury made their first contribution in https://github.com/pyenv/pyenv/pull/2342
    • @hay made their first contribution in https://github.com/pyenv/pyenv/pull/2351

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.2.5...v2.3.0

    Source code(tar.gz)
    Source code(zip)
  • v2.2.5(Mar 18, 2022)

    What's Changed

    • Add CPython 3.10.3
    • Add CPython 3.9.11
    • Add CPython 3.8.13
    • Add CPython 3.7.13
    • Add CPython 3.11.0a5 by @saaketp in https://github.com/pyenv/pyenv/pull/2241
    • Add CPython 3.11.0a6 by @saaketp in https://github.com/pyenv/pyenv/pull/2266
    • Add PyPy 7.3.8 02/20/2022 release by @dand-oss in https://github.com/pyenv/pyenv/pull/2253
    • Add miniconda 4.11.0 by @aphedges in https://github.com/pyenv/pyenv/pull/2268
    • Add Pyston-2.3.2 by @dmrlawson in https://github.com/pyenv/pyenv/pull/2240
    • Fix UnicodeDecodeError for CPython 3.6.15 and 3.7.12 by @fofoni in https://github.com/pyenv/pyenv/pull/2237
    • python-build: add URL for get-pip for Python 3.6 by @fofoni in https://github.com/pyenv/pyenv/pull/2238
    • Bump openssl to 1.1.1n for CPython 3.10.x
    • Docs(pyenv-prefix): note support for multiple versions by @scop in https://github.com/pyenv/pyenv/pull/2270

    New Contributors

    • @fofoni made their first contribution in https://github.com/pyenv/pyenv/pull/2237
    • @saaketp made their first contribution in https://github.com/pyenv/pyenv/pull/2241

    Full Changelog: https://github.com/pyenv/pyenv/compare/v2.2.4...v2.2.5

    Source code(tar.gz)
    Source code(zip)
  • v2.2.4-1(Jan 27, 2022)

    Release 2.2.4

    • Added docstrings to several undocumented functions by @fluencydoc (#2197)
    • Fix incorrect pypy 2.7-7.3.6 sha256 hashes by @joestrach in (#2208)
    • Fix a regression in include paths when compiling ctypes in 3.6.15/3.7.12 by @chipx86 (#2209)
    • Revert "Disable coreutils on M1 Apple Silicon with arm64 (#2020)" by @native-api (#2212)
    • CPython 3.11.0a4 by @nedbat in (#2217)
    • CPython 3.9.10 and 3.10.2 by @nedbat in (#2219)
    • miniconda3-latest: added Linux-aarch64 by @verdimrc (#2221)
    • Add GraalPython 22.0.0 by @msimacek in (#2226)
    Source code(tar.gz)
    Source code(zip)
  • v2.2.3(Dec 22, 2021)

    Release 2.2.3

    • Add new pypy versions (pypy2.7-7.3.2~7.3.5) to the version list (#2194)
    • Fix Python 3.7.12 compilation on macOS arm64/M1. (#2190)
    • Fix Python 3.6.15 compilation on macOS arm64/M1. (#2189)
    • Add Anaconda3-2021.11 (#2193)
    • CPython 3.11.0a3 (#2187)
    • Fix errant "echo" in README install instructions (#2185)
    • Add Miniforge and Mambaforge 4.10.3-10 (#2184)
    • Add CPython 3.10.1 (#2183)
    • Fix 3.6.15 build on macOS (#2182)
    Source code(tar.gz)
    Source code(zip)
  • v2.2.2(Nov 22, 2021)

    Release 2.2.2

    • Add support for macOS Apple M1 (#2164)

    Release 2.2.1

    • Add support for macOS Apple M1 (#2164)
    • Add CPython 3.9.9 (#2162)
    • Add CPython 3.9.8 (#2152)
    • Add Add micropython 1.17 (#2158)
    • Add Add micropython 1.16 (#2158)
    • Patch 3.10.0 configure, fixes https://bugs.python.org/issue45350 (#2155)
    • Use command and type instead of which (#2144)
    • Add definition of pyenv help in COMMANDS.md #2139
    • Use OpenSSL 1.0 for CPython 2.7.18
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Oct 27, 2021)

    Release 2.2.0

    • Adding PyPy release 7.3.7 (Python 3.7 and 3.8). (#2132)
    • Append Homebrew custom prefix to search path (#1957)
    • Add documentation for init command (#2125)
    • Add setup instructions for the case when one installs Pyenv as part of a batch job (#2127)
    • Add documentation for completions command (#2126)
    • Default --with-universal-archs to universal2 on Apple Silicon (#2122)
    • Update README.md (#2120)
    • Add GraalPython 21.3.0 (#2117)
    • Pypy ver 7.3.6 - python 3.7 and python 3.8 (#2111)
    • Discover Tcl/Tk reliably and use active version (#2106)
    • Fish installation instructions (#2104)
    • Add CPython 3.11.0a1 (#2099)
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Oct 5, 2021)

    Release 2.1.0

    • Fix mambaforge-pypy3 build (#2096)
    • Add Python 3.10.0 (#2093)
    • Add documentation for exec command (#2090)
    • Add documentation for shims command (#2091)
    • Add documentation for hooks command (#2089)
    • Add documentation for root command (#2088)
    • Add documentaion for prefix command (#2087)
    • Update to Pyston's v2 package of the 2.3.1 release (#2078)
    • Add pyston-2.3.1 support (#2075)
    • Don't update conda when installing pip (#2074)
    • Improve add_miniconda.py (#2072)
    • GitHub actions tests (#2073)
    • Fix sed commands (#2071)
    • macOS: fix the build of Python 2.7.18 on macOS 11.5.2 (Big Sur) + Apple Silicon (#2061)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.7(Sep 20, 2021)

    Release 2.0.7

    • Update setup instructions in the Readme (#2067)
    • Allow tcl-tk as argument or try with homebrew by default (#1646)
    • Allow system Python in sbin (#2065)
    • Prevent addition of duplicate plugin dirs to PATH (#2045)
    • Disable coreutils on M1 Apple Silicon with arm64 (#2020)
    • Add Python 3.10.0rc2 (#2053)
    • Add space after yes/no prompt (#2040)
    • Add CPython v3.6.15 and v3.7.12 (#2052)
    • Add missing Python 2.6.x definitions and patches (#2051)
    • Fix build of ossaudiodev in Linux/FreeBSD for Python 2.6 (#2049)
    • Fix build of ossaudiodev in Linux/FreeBSD for Python 3.1 (#2047)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.6(Aug 31, 2021)

  • v2.0.5(Aug 23, 2021)

    Release 2.0.5

    • Move man page to location where it can be automatically found by man (#2032)
    • Update checksums for CPython 3.10.0rc1 (#2025)
    • Remove 3.9.3 (#2022)
    • Add CPython 3.10.0rc1(#2023)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Jul 25, 2021)

    Release 2.0.4

    • Added scripts for rolling releases of Miniforge (#2019)
    • Update pyston-2.3 (#2017)
    • Add GraalPython 21.2.0 (#2018)
    • Add CPython 3.10.0b4 (#2013), (#2005)
    • Add Pyston 2.3 (#2012)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Jul 3, 2021)

    Release 2.0.3

    • Remove PATH warning (#2001)
    • Add Python 3.6.14, 3.7.11, 3.8.11, and 3.9.6 (#1996)
    • Miniforge minor update to 4.10.1-5 (#1992)
    • Suggest that fish users init in interactive mode (#1991)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(Jun 27, 2021)

    Release 2.0.2

    • Miniforge minor update to 4.10.1-5 (#1992)
    • Suggest that fish users init in interactive mode (#1991)
    • Add 3.10.0b3 (#1988)
    • Revert "Drop inferring version to install from pyenv local" (#1984)
    • Use system Python3 for tests (#1979)
    • Check for shims in path with pure Bash (#1978)
    • Update setup instructions for debian, ubuntu etc. (#1977)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Jun 6, 2021)

    Release 2.0.1

    • Drop inferring version to install from pyenv local (#1907)
    • Create mambaforge-4.10.1-4 (#1971)
    • Add 3.10.0b2 recipe (#1966)
    • Fix .bashrc echo install syntax error (#1965)
    • Add explicit Zsh instructions for MacOS (#1964)
    • Install pip with pyston (#1955)
    • Mention log file if an error happened before building, too (#1537)
    • Add pypy3.7-7.3.5 (#1950)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(May 23, 2021)

    Release 2.0.0

    • Support for CPython 3.9.5 has been added.
    • Support for CPython 3.8.10 has been added.
    • Support for CPython 3.10.0b1 has been added.
    • Support for GraalPython 21.1.0 has been added.
    • Support for Anaconda 2021.05 has been added.
    • Support for Miniforge3 4.10.1-1 has been added.
    • CPython 3.10-dev target branch renamed.
    • CPython 3.10-dev and 3.11-dev updated.
    • Bump OpenSSL to 1.1.1x for all Pythons that support MacOS 11
    • Update generated configuration files before run ./configure
    • Full shell configuration instructions placed into pyenv init
    • Prevent build from installing MacOS apps globally
    • ldflags_dirs is not needed for Python and causes failures
    • Report cache filename at download
    • Add micropython 1.15
    • Correct URLs for Stackless builds and add Stackless 2.7.16

    Breaking changes

    • Split startup logic into PATH and everything else (https://github.com/pyenv/pyenv/issues/1649#issuecomment-694388530)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-rc1(May 20, 2021)

    Release 2.0.0

    • Support for CPython 3.9.5 has been added.
    • Support for CPython 3.8.10 has been added.
    • Support for CPython 3.10.0b1 has been added.
    • Support for GraalPython 21.1.0 has been added.
    • Support for Anaconda 2021.05 has been added.
    • Support for Miniforge3 4.10.1-1 has been added.
    • CPython 3.10-dev target branch renamed.
    • CPython 3.10-dev and 3.11-dev updated.
    • Bump OpenSSL to 1.1.1x for all Pythons that support MacOS 11
    • Update generated configuration files before run ./configure
    • Full shell configuration instructions placed into pyenv init
    • Prevent build from installing MacOS apps globally
    • ldflags_dirs is not needed for Python and causes failures

    Breaking changes

    • Split startup logic into PATH and everything else (https://github.com/pyenv/pyenv/issues/1649#issuecomment-694388530)
    Source code(tar.gz)
    Source code(zip)
  • 1.2.27(May 1, 2021)

    • Add GraalPython 21.1.0 (#1882)
    • Add CPython 3.10.0a7 (#1880)
    • Docs(README): fix info about version-file separator (#1874)
    • List versions starting with a dot (#1350)
    • Feat: support (skip) commented lines in version-file (#1866)
    • pypy3.7-7.3.4 (#1873)
    • Create miniforge3-4.10 (#1868)
    • Add CPython 3.9.4 (#1865)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.26(Apr 6, 2021)

  • 1.2.26(Apr 5, 2021)

  • v1.2.25(Apr 6, 2021)

    • bpo-43631: update to openssl 1.1.1k (#1861)
    • Add CPython 3.9.3 and 3.8.9 (#1859)
    • Add micropython 1.14 (#1858)
    • Shell detect improvements (#1835)
    • Test(init): remove misleading detect from parent shell case arg (#1856)
    • Add GraalPython 21.0.0 (#1855)
    Source code(tar.gz)
    Source code(zip)
  • 1.2.25(Apr 4, 2021)

    • bpo-43631: update to openssl 1.1.1k (#1861)
    • Add CPython 3.9.3 and 3.8.9 (#1859)
    • Add micropython 1.14 (#1858)
    • Shell detect improvements (#1835)
    • Test(init): remove misleading detect from parent shell case arg (#1856)
    • Add GraalPython 21.0.0 (#1855)
    Source code(tar.gz)
    Source code(zip)
Owner
pyenv
pyenv
pyenv
Ready-to-run Docker images containing Jupyter applications

Jupyter Docker Stacks are a set of ready-to-run Docker images containing Jupyter applications and interactive computing tools.

Project Jupyter 7k Jan 03, 2023
Run a command in the named virtualenv.

Vex Run a command in the named virtualenv. vex is an alternative to virtualenv's source wherever/bin/activate and deactivate, and virtualenvwrapper's

Sasha Hart 374 Dec 21, 2022
An experimental technique for efficiently exploring neural architectures.

SMASH: One-Shot Model Architecture Search through HyperNetworks An experimental technique for efficiently exploring neural architectures. This reposit

Andy Brock 478 Aug 04, 2022
A PipEnv Environment Switcher

Pipes Pipenv Environment Switcher ⚡ Overview Pipes is a Pipenv companion CLI tool that provides a quick way to jump between your pipenv powered projec

Gui Talarico 131 Sep 04, 2022
a pyenv plugin to manage virtualenv (a.k.a. python-virtualenv)

pyenv-virtualenv pyenv-virtualenv is a pyenv plugin that provides features to manage virtualenvs and conda environments for Python on UNIX-like system

pyenv 5.3k Jan 08, 2023
This tool is used to install `pyenv` and friends.

pyenv installer This tool installs pyenv and friends. It is inspired by rbenv-installer. Prerequisites In general, compiling your own Python interpret

pyenv 3.5k Jan 03, 2023
macOS development environment setup: Setting up a new developer machine can be an ad-hoc, manual, and time-consuming process.

dev-setup Motivation Setting up a new developer machine can be an ad-hoc, manual, and time-consuming process. dev-setup aims to simplify the process w

Donne Martin 5.9k Jan 02, 2023
Define requirements inside your python code and scriptenv makes them ready to import.

scriptenv Define requirements inside your python code and scriptenv makes them ready to import. Getting Started Install scriptenv $ pip install script

Stefan Hoelzl 6 Nov 04, 2022
A fast and easy python virtual environment creator for linux with some pre-installed libraries.

python-venv-creator A fast and easy python virtual environment created for linux with some optional pre-installed libraries. Dependencies: The followi

2 Apr 19, 2022
Fish shell tool for managing Python virtual environments

VirtualFish VirtualFish is a Python virtual environment manager for the Fish shell. You can get started by reading the documentation. (It’s quite shor

Justin Mayer 968 Dec 24, 2022
to-requirements.txt allows to automatically add and delete modules to requirements.txt installing them using pip.

to-requirements.txt | Automatically update requirements.txt to-requirements.txt allows to automatically add and delete modules to requirements.txt ins

Ilya 16 Dec 29, 2022
Manage python virtual environments on the working notebook server

notebook-environments Manage python virtual environments on the working notebook server. Installation It is recommended to use this package together w

Vladislav Punko 44 Nov 02, 2022
Virtual Python Environment builder

virtualenv A tool for creating isolated virtual python environments. Installation Documentation Changelog Issues PyPI Github Code of Conduct Everyone

Python Packaging Authority 4.3k Dec 30, 2022
PyDynamica is a freely available agent-based economy simulation

PyDynamica PyDynamica is a pure python implementation of Sociodynamica, a virtual environment to simulate a simple economy with minimal dependencies.

4 Sep 10, 2022
Python Development Workflow for Humans.

Pipenv: Python Development Workflow for Humans [ ~ Dependency Scanning by PyUp.io ~ ] Pipenv is a tool that aims to bring the best of all packaging wo

Python Packaging Authority 23.5k Jan 01, 2023
Python virtualenvs in Debian packages

dh-virtualenv Contents Overview Presentations, Blogs & Other Resources Using dh-virtualenv How does it work? Running tests Building the package in a D

Spotify 1.5k Jan 02, 2023
A simple but powerful Python packer to run any project with any virtualenv dependencies anywhwere.

PyEmpaq A simple but powerful Python packer to run any project with any virtualenv dependencies anywhwere. With PyEmpaq you can convert any Python pro

Facundo Batista 23 Sep 22, 2022
The GNS3 server manages emulators such as Dynamips, VirtualBox or Qemu/KVM

GNS3-server This is the GNS3 server repository. The GNS3 server manages emulators such as Dynamips, VirtualBox or Qemu/KVM. Clients like the GNS3 GUI

GNS3 644 Dec 30, 2022
A pythonic interface to high-throughput virtual screening software

pyscreener A pythonic interface to high-throughput virtual screening software Overview This repository contains the source of pyscreener, both a libra

56 Dec 15, 2022
Simple Python version management

Simple Python Version Management: pyenv pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UN

pyenv 30.1k Jan 04, 2023