Skip to content
Advertisement

How to downgrade python version from 3.8 to 3.7 (mac)

I’m using Python & okta-aws tools and in order to fetch correct credentials on aws I need to run okta-aws init. But got an error message of Could not read roles from Okta and the system prompted that"Your Pipfile requires python_version 3.7, but you are using 3.8.3 (/usr/local/Cellar/o/1.1.4/l/.venv/bin/python).

I’ve tried to search all the Pipfiles on the mac and it seems that the Pipflie under my ~/Pipfile and /usr/local/Cellar/python@3.8/3.8.3_2/libexec/bin/Pipfile all have the same python version of 3.8, while the Pipfile under my /usr/local/Cellar/okta-aws-tools/1.1.4/libexec/Pipfile has required python_version = 3.7.

I’ve been struggling with this for a while and really not sure how I can fix this.

Advertisement

Answer

Consider installing pyenv with Homebrew on macOS

brew update
brew install pyenv

OR Clone the repository to get the latest version of pyenv

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

Define your environment variables (For a recent MacOS you may want to replace ~/.bash_profile with ~/.zshrc as that is the default shell)

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

Restart your shell so the path changes take effect

exec "$SHELL"

Verify the installation and check the available python versions

pyenv install --list

Install the required python version

pyenv install 3.7

Set it as your global version after installation

pyenv global 3.7

eval pyenv path

eval "$(pyenv init --path)"

Verify your current python version the system is using

python3 --version
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement