Python/GoLang/Java 多环境管理工具 pyenv/goenv/jenv

目录

一、Python多环境

安装

bash 复制代码
git clone https://gitee.com/tekintian/pyenv.git /opt/env/pyenv

MacOS修改~/.zshrc,Linux修改~/.bashrc,追加以下内容:

shell 复制代码
export PYENV_ROOT="/opt/env/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

使配置生效:

bash 复制代码
source ~/.zshrc

使用

pyenv公共环境

bash 复制代码
pyenv install -l     # 查看可安装的版本
pyenv install 3.9    # 安装python3.9,会自动具体到小版本号,即3.9.19
pyenv uninstall 3.9  # 卸载
pyenv versions       # 查看已有版本
pyenv global 3.9     # 指定全局默认的python版本
pyenv local 3        # 指定当前用户生效的python版本,只写3会自动具体到已安装的python 3.x.x
pyenv shell 3        # 指定当前终端生效的python版本,终端关掉就失效了
pyenv shell --unset  # 取消
pyenv rehash         # 重建环境变量,每增删 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令

pyenv版本管理的原理是将python版本保存于$PYENV_ROOT/versions/文件夹下,然后通过$PYENV_ROOT/version文件指定全局版本,通过~/.python-version文件指定当前用户版本。

如果希望系统自带版本也能被pyenv管理,可以将系统python软链接到pyenv版本库:

bash 复制代码
ln -s /System/Library/Frameworks/Python.framework/Versions/2.7 $PYENV_ROOT/versions/system

【高级用法】一次指定多个python版本

bash 复制代码
pyenv shell 2 3.9      # 同时指定两个版本,首个将作为默认
python --version       # Python 2.7.18
python2 --version      # Python 2.7.18
python2.7 --version    # Python 2.7.18
python2.7.18 --version # Python 2.7.18
python3 --version      # Python 3.9.19
python3.9 --version    # Python 3.9.19

pyenv虚拟环境

使用独立的虚拟环境,可以不影响全局环境。 原生pyenv不支持虚拟环境,需要额外安装依赖:

bash 复制代码
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

随后pyenv命令就支持创建虚拟环境了:

bash 复制代码
pyenv virtualenv 3.9 testenv  # 创建名为testenv的虚拟环境,python版本3.9必须是已存在的
pyenv activate testenv   # 激活虚拟环境,终端用户名前出现 (testenv) 表明已进入虚拟环境
pyenv deactivate         # 退出虚拟环境
pyenv uninstall testenv  # 删除虚拟环境

执行 pyenv virtualenvs 可以看到所有虚拟环境:

bash 复制代码
root@Winterant Projects % pyenv virtualenvs
  3.9.19/envs/testenv (created from /opt/env/pyenv/versions/3.9.19)
  testenv (created from /opt/env/pyenv/versions/3.9.19)

执行 pyenv versions 可以看到虚拟环境也被收录到版本管理中:

text 复制代码
root@Winterant Projects % pyenv versions
  system
  2.7.18
* 3.9.19 (set by /opt/env/pyenv/version)
  3.9.19/envs/testenv
  testenv --> /opt/env/pyenv/versions/3.9.19/envs/testenv

二、GoLang多环境goenv

安装

bash 复制代码
git clone https://github.com/syndbg/goenv.git /opt/env/goenv

MacOS修改~/.zshrc,Linux修改~/.bashrc,追加以下内容:

shell 复制代码
export GOENV_ROOT="/opt/env/goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"

使配置生效:

bash 复制代码
source ~/.zshrc

使用

与pyenv一模一样的套路。

bash 复制代码
goenv install -l       # 列出所有版本
goenv install 1.21     # 安装指定版本
goenv uninstall 1.21   # 卸载指定版本
goenv versions         # 查看已有版本
goenv global 1.21      # 指定全局默认的go版本,记录于$GOENV_ROOT/version
goenv local 1.21       # 为当前用户设置go版本,记录于~/.go-version

三、Java多环境 jenv

安装

bash 复制代码
git clone https://github.com/jenv/jenv.git /opt/env/jenv

MacOS修改~/.zshrc,Linux修改~/.bashrc,追加以下内容:

shell 复制代码
export JENV_ROOT="/opt/env/jenv"
export PATH="$JENV_ROOT/bin:$PATH"
eval "$(jenv init -)"
export JAVA_HOME="$(jenv prefix)"

使配置生效:

bash 复制代码
source ~/.zshrc

使用

很遗憾,java sdk不能通过jenv install命令完成安装,只能手动添加jdk。

所以我们需要提前下载好JDK包,并解压,然后让jenv管理:

bash 复制代码
jenv add /opt/env/java/jdk1.8.0_401.jdk/Contents/Home  # 放在opt有个缺点,IDEA添加不了
jenv add /Library/Java/JavaVirtualMachines/jdk-17.0.10.jdk/Contents/Home

基本使用:

bash 复制代码
jenv versions   # 查看所有版本
jenv remove oracle64-1.8.0.401  # 卸载指定jdk
jenv global 17  # 指定全局系统默认jdk
jenv local 17   # 指定当前用户jdk
jenv shell 17   # 指定当前终端jdk

参考

pyenv https://blog.csdn.net/tekin_cn/article/details/141813795

goenv https://zhuanlan.zhihu.com/p/657684399

相关推荐
开心-开心急了8 分钟前
Flask入门教程——李辉 第三章 关键知识梳理
后端·python·flask
少许极端32 分钟前
算法奇妙屋(七)-字符串操作
java·开发语言·数据结构·算法·字符串操作
懒羊羊不懒@34 分钟前
Java基础语法—字面量、变量详解、存储数据原理
java·开发语言
rannn_1111 小时前
【学以致用|python自动化办公】OCR批量识别自动存为Excel(批量识别发票)
python·ocr·excel·财务
小龙报1 小时前
《算法通关指南---C++编程篇(2)》
c语言·开发语言·数据结构·c++·程序人生·算法·学习方法
古一|1 小时前
Vue3中ref与reactive实战指南:使用场景与代码示例
开发语言·javascript·ecmascript
AI视觉网奇1 小时前
pycharm 默认终端设置 cmd
ide·python·pycharm
言之。1 小时前
LiteLLM:让LLM调用变得简单统一
后端·python·flask
宠友信息1 小时前
java微服务驱动的社区平台:友猫社区的功能模块与实现逻辑
java·开发语言·微服务
驰羽2 小时前
[GO]golang接口入门:从一个简单示例看懂接口的多态与实现
开发语言·后端·golang