当前位置: 首页 > article >正文

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

目录

  • 一、Python多环境
    • 安装
    • 使用
      • pyenv公共环境
      • pyenv虚拟环境
  • 二、GoLang多环境goenv
    • 安装
    • 使用
  • 三、Java多环境 jenv
    • 安装
    • 使用
  • 参考

一、Python多环境

安装

git clone https://gitee.com/tekintian/pyenv.git /opt/env/pyenv

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

export PYENV_ROOT="/opt/env/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

使配置生效:

source ~/.zshrc

使用

pyenv公共环境

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版本库:

ln -s /System/Library/Frameworks/Python.framework/Versions/2.7 $PYENV_ROOT/versions/system

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

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不支持虚拟环境,需要额外安装依赖:

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

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

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

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

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 可以看到虚拟环境也被收录到版本管理中:

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

安装

git clone https://github.com/syndbg/goenv.git /opt/env/goenv

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

export GOENV_ROOT="/opt/env/goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"

使配置生效:

source ~/.zshrc

使用

与pyenv一模一样的套路。

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

安装

git clone https://github.com/jenv/jenv.git /opt/env/jenv

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

export JENV_ROOT="/opt/env/jenv"
export PATH="$JENV_ROOT/bin:$PATH"
eval "$(jenv init -)"
export JAVA_HOME="$(jenv prefix)"

使配置生效:

source ~/.zshrc

使用

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

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

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

基本使用:

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


http://www.kler.cn/a/408714.html

相关文章:

  • 【时时三省】NIT计算机考试基础知识
  • 重构代码之将引用类型更改为值类型
  • 【Python】爬虫实战:高效爬取电影网站信息指南(涵盖了诸多学习内容)
  • HDR视频技术之三:色度学与颜色空间
  • php常用伪协议整理
  • 从 HTML 到 CSS:开启网页样式之旅(二)—— 深入探索 CSS 选择器的奥秘
  • 16:(标准库)ADC三:使用外部触发启动ADC/模拟看门狗
  • CTF之密码学(Polybius密码)
  • 241124_基于MindSpore学习GPT2
  • C++ std::unique_ptr的使用及源码分析
  • 【Spring源码核心篇-03】精通spring的aop的底层原理和源码实现
  • c++(入门)
  • 群核科技首次公开“双核技术引擎”,发布多模态CAD大模型
  • 从零开始:使用 Spring Boot 开发图书管理系统
  • pip 与当前python环境版本不匹配, pyenv, pipenv, conda
  • 速盾:海外服务器使用CDN加速有什么优势?
  • [Python3学习笔记-基础语法] Python3 基础语法
  • Excel如何批量导入图片
  • UE5中T_noise 纹理的概述
  • 前端把dom页面转为pdf文件下载和弹窗预览
  • C语言蓝桥杯组题目
  • transformer.js(一):这个前端大模型运行框架的可运行环境、使用方式、代码示例以及适合与不适合的场景
  • C#里怎么样使用多线程读取多文件?
  • 深度学习实战图像缺陷修复
  • 二分查找的几种寻找情况
  • 逻辑像素与物理像素——canvas缩放后绘图区域的长宽究竟是多少