You must have brew
installed according to the instructions in this project.
We install pyenv
using brew
. Type this command in Terminal:
brew install pyenv
You can also add virtualenv
with brew install pyenv-virtualenv
.
Because pyenv
is a series of scripts, we want to make sure that these scripts are always run in emulation mode.
Create a file ~/bin/pyenv
with the following content:
#!/bin/sh
# assumes default location of pyenv in `/usr/local/bin/pyenv`
arch -x86_64 /usr/local/bin/pyenv "$@"
Make this file executable:
chmod gu+rx ~/bin/pyenv
Now when we call pyenv, it will always be in x86 mode.
To make pyenv
work, we have to make some changes to ~/.zshrc
. Add the following:
# Configure pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
To make pyenv
and brew place nice, we have to modify the script we use to run brew
. Every time we run brew, we want to modify our PATH
so that the pyenv shims are removed.
Edit ~/bin/brew
, and change its contents to this:
#!/bin/sh
# Remove Postgres.app config
BREWPATH="${PATH//:\/Applications\/Postgres.app\/Contents\/Versions\/latest\/bin/}"
# Check if pyenv is available, if so remove shims from path
if which pyenv >/dev/null 2>&1; then
BREWPATH="${BREWPATH//$(pyenv root)\/shims:/}"
fi
# Assumes default location of brew in `/usr/local/bin/brew`
arch -x86_64 /usr/bin/env PATH="$BREWPATH" /usr/local/bin/brew "$@"
If you do not use Postgres.app, you can make a simpler version, but this will also work.
And we're done, when you restart your Terminal you have both brew
and pyenv
running in x86 mode, and no complaints from brew doctor
.