Self Driven

兴趣是1,坚持是剩下的99

0%

Mac 下的 Java & Python 多环境管理

前言

最近在跑一些旧的项目的时候发现本地的 Java 跟 Python 环境都“太新”了。Java 默认的 11,python 默认的 3.x,跑项目的时候各种报错,想着就搞一下这两个的多环境,以后也方便切换。

Java 多环境

Java 的多环境要用到 jenv

1
2
3
4
5
6
7
#用 brew 安装 jenv
brew install jenv
#添加环境变量:
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
export PATH="$HOME/.jenv/shims:$PATH"
#在 jenv 中添加 java 版本
jenv add /Library/Java/JavaVirtualMachines/<对应版本的 Java 地址>/Contents/Home

操作完成后,可以用 jenv versions 查看可以使用的 java 版本,以我本机的为例:

1
2
3
4
5
6
➜  jenv versions
* system (set by /Users/brainku/.jenv/version)
1.7
1.7.0.79
1.8
1.8.0.77

在想要切换版本的时候就是用 jenv global/local xxx 来切换,比如我想在当前目录使用 1.7 就是:

1
jenv local 1.7

Python 多环境

跟 Java 的 jenv 类似,Python 也有一个 pyenv。但在 pyenv 之前,我们还得想想怎么安装 python@2
python@2 早就不维护了,brew 也在 2021 年下线了 python@2 的安装,想要安装 python@2 还得这样:

1
2
3
4
cd ~
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/86a44a0a552c673a05f11018459c9f5faae3becc/Formula/python@2.rb
brew install python@2.rb #下载了对应的仓库之后就行安装
rm python@2.rb

pyenv 的使用方式与 jenv 类似

1
2
3
4
5
6
7
8
# 安装 pyenv
brew install pyenv
# 设置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# 设置当前版本
pyenv global 3.10

刚才说到那么多 python@2 的安装,其实有更简单的方式,pyenv 本身就自带~

1
2
pyenv install -l #展示可安装版本
pyenv install xxx

PPS

遇到以下这些报错就要看看是不是版本问题了:

  • gradle 编译的时候出现 Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory()
    • 搜了下一下发现是本机的 Java11 太新了
  • 项目中生成的 trace 文件在 chrome 打开的时候会白屏是 google 自己的问题。参考这里,打开 chrome://trace 再手动加载就行了。

参考资料:

Java 多环境: https://stackoverflow.com/questions/26252591/mac-os-x-and-multiple-java-versions
Python 多环境:https://github.com/pyenv/pyenv
Python 2 安装:https://www.wyr.me/post/658