如何将 python 版本从 3.8 降级到 3.7 (mac)

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

我正在使用 Python 和 okta-aws 工具,为了在 aws 上获取正确的凭据,我需要 运行 okta-aws init。但是得到了Could not read roles from Okta的错误信息,系统提示"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).

我试着搜索了 mac 上的所有 Pipfile,我的 ~/Pipfile/usr/local/Cellar/python@3.8/3.8.3_2/libexec/bin/Pipfile 下的 Pipflie 似乎都有相同的 python 版本3.8,而我的 /usr/local/Cellar/okta-aws-tools/1.1.4/libexec/Pipfile 下的 Pipfile 有 required python_version = 3.7.

我已经为此苦苦挣扎了一段时间,真的不确定该如何解决。

我建议您安装和使用 pyenv,一个 Python 版本管理。 安装 pyenv 后,安装 python 3.7:

pyenv install 3.7

然后将环境 PYENV_VERSION 设置为您要使用的 python 版本,在这种情况下将为 3.7:

pyenv shell 3.7

考虑在 macOS 上使用 Homebrew 安装 pyenv

brew update
brew install pyenv

克隆存储库以获得最新版本的 pyenv

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

定义环境变量

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

重新启动您的 shell 以使路径更改生效

exec "$SHELL"

验证安装并检查可用的 python 版本

pyenv install --list

安装所需的 python 版本

pyenv install 3.7

安装后设置为你的全球版本

pyenv global 3.7

验证系统当前使用的 python 版本

python3 --version

仅酿造方法。

rm -rf $(brew --repository)/Library/Taps/company
brew tap-new company/team
brew extract python@3.7 company/team  --version=3.7.9 
HOMEBREW_NO_AUTO_UPDATE=1  brew install company/team/python@3.7.9
brew link --force company/team/python@3.7.9

这将创建一个本地抽头,将 python 3.7.X 提取到该本地抽头中的公式,然后安装并链接该公式

创建的本地tap和新的公式文件可以在 $(brew --repository)/Library/Taps/company/homebrew-team

  • 重新安装 xcode-select(使用的解决方案 here
  • 降级 python 3.9 到 3.8.12(使用@Shayan 的解决方案
  • 重新启动终端并检查默认 Python 版本,仅此而已

这是我对 M1 的解决方案 Mac