Notes on managing pyenv, rbenv and nvm using Homebrew

September 07, 2020

Tags: python, ruby, javascript

Notes on managing pyenv, rbenv and nvm using Homebrew

I like package managers. But when I need one for each programming language I use, and when some applications start expecting me to write the version number as part of the package manager name (pip3), I think it’s time to streamline stuff. That is the reason I use version managers to manage my package managers.

A version manager is a specialized package manager that deals with the different versions of the same programming language. One installation of Python 3.8 will have exactly one accompanying installation of pip, so if I have two installations of Python 3.8 and one Python 3.7, that is three package managers I have to keep track of. Using a version manager like pyenv to manage, and switch between individual installations of a programming language (and its accompanying package manager) allows me to think less of the mess that this could otherwise lead to and concentrate on getting my work done.

One level above that, using Homebrew likewise allows me the luxury of not worrying too much about how a particular version manager manages my programming language package managers.

In the following, my notes for how I use Homebrew to manage my version managers for Python, Ruby and Node. And how I use each of these to manage my installed language version.

homebrew (


$ /bin/bash -c "$(curl -fsSL"

$ brew ls $ brew install pyenv

pyenv (Github)

$  pyenv versions
* system (set by ~/.pyenv/version)

$ pyenv install --list $ pyenv install 3.8.5

$ pyenv versions
* system (set by ~/.pyenv/version)
$ pyenv global 3.8.5
$ pyenv versions
* 3.8.5 (set by ~/.pyenv/version)

Remember to add to .zshrc

eval "$(pyenv init -)"

rbenv (Github)

$ rbenv versions
* system (set by /Users/lasper/.rbenv/version)

$ rbenv install --list

$ rbenv install 2.7.1

$ rbenv init

$ gem env home

$ rbenv global 2.7.1 Sets global version of Ruby used in all shells by writing to ~/.rbenv/version. Overridden .ruby-version in project or by setting environment variable RBENV_VERSION.

$ rbenv shell jruby-1.7.1 Sets shell-specific Ruby version by setting the RBENV_VERSION environment variable in your shell. Overrides application-specific and global version.

$ rbenv shell $ rbenv shell --unset When run without a version number, rbenv shell reports the current value of RBENV_VERSION. You can also unset the shell version:

gem install mdless

nvm (Github)

nvm ls nvm install 8.0.0 nvm --version nvm use 8.0