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 virtualenvs3.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 versionssystem2.7.18
* 3.9.19 (set by /opt/env/pyenv/version)3.9.19/envs/testenvtestenv --> /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.mzph.cn/diannao/61985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用

1. 谷歌浏览器安装及使用流程 1.1 准备篡改猴扩展程序包。 因为谷歌浏览器的扩展商城打不开,所以需要准备一个篡改猴压缩包。 其他浏览器只需打开扩展商城搜索篡改猴即可。 没有压缩包的可以进我主页下载。 也可直接点击下载:Chrome浏览器篡改猴(油猴…

STM32F103C8T6实时时钟RTC

目录 前言 一、RTC基本硬件结构 二、Unix时间戳 2.1 unix时间戳定义 2.2 时间戳与日历日期时间的转换 2.3 指针函数使用注意事项 ​三、RTC和BKP硬件结构 四、驱动代码解析 前言 STM32F103C8T6外部低速时钟LSE(一般为32.768KHz)用的引脚是PC14和PC…

【JavaEE初阶】多线程初阶下部

文章目录 前言一、volatile关键字volatile 能保证内存可见性 二、wait 和 notify2.1 wait()方法2.2 notify()方法2.3 notifyAll()方法2.4 wait 和 sleep 的对比(面试题) 三、多线程案例单例模式 四、总结-保证线程安全的思路五、对比线程和进程总结 前言…

【人工智能】Python在机器学习与人工智能中的应用

Python因其简洁易用、丰富的库支持以及强大的社区,被广泛应用于机器学习与人工智能(AI)领域。本教程通过实用的代码示例和讲解,带你从零开始掌握Python在机器学习与人工智能中的基本用法。 1. 机器学习与AI的Python生态系统 Pyth…

“iOS profile文件与私钥证书文件不匹配”总结打ipa包出现的问题

目录 文件和证书未加载或特殊字符问题 证书过期或Profile文件错误 确认开发者证书和私钥是否匹配 创建证书选择错误问题 申请苹果 AppId时勾选服务不全问题 ​总结 在上线ios平台的时候,在Hbuilder中打包遇见了问题,生成ipa文件时候,一…

element-ui 中el-calendar 日历插件获取显示的第一天和最后一天【原创】

需要获取el-calendar 日历组件上的第1天和最后一天。可以通过document.querySelector()方法进行获取dom元素中的值,这样避免计算问题。 获取的过程中主要有两个难点,第1个是处理上1月和下1月的数据,第2个是跨年的数据。 直接贴代码&#xff…

JavaScript的基础数据类型

一、JavaScript中的数组 定义 数组是一种特殊的对象,用于存储多个值。在JavaScript中,数组可以包含不同的数据类型,如数字、字符串、对象、甚至其他数组。数组的创建有两种常见方式: 字面量表示法:let fruits [apple…

5.5 W5500 TCP服务端与客户端

文章目录 1、TCP介绍2、W5500简介2.1 关键函数socketlistensendgetSn_RX_RSRrecv自动心跳包检测getSn_SR 1、TCP介绍 TCP 服务端: 创建套接字[socket]:服务器首先创建一个套接字,这是网络通信的端点。绑定套接字[bind]:服务器将…

Android 15 版本更新及功能介绍

Android 15版本时间戳 Android 15,代号Vanilla Ice Cream(香草冰淇淋),是当下 Android 移动操作系统的最新主要版本。 开发者预览阶段:2024年2月,谷歌发布了Android 15的第一个开发者预览版本(DP1),这标志着新系统开发的正式启动。随后,在3月和4月,谷歌又相继推出了D…

第02章_MySQL环境搭建(基础)

1. MySQL 的卸载 1.1 步骤1:停止 MySQL 服务 在卸载之前,先停止 MySQL8.0 的服务。按键盘上的 “Ctrl Alt Delete” 组合键,打开“任务管理器”对话 框,可以在“服务”列表找到“MySQL8.0” 的服务,如果现在“正在…

红队笔记--W1R3S、JARBAS、SickOS、Prime打靶练习记录

W1R3S(思路为主) 信息收集 首先使用nmap探测主机,得到192.168.190.147 接下来扫描端口,可以看到ports文件保存了三种格式 其中.nmap和屏幕输出的一样;xml这种的适合机器 nmap -sT --min-rate 10000 -p- 192.168.190.147 -oA nmapscan/ports…

学习笔记|MaxKB对接本地大模型时,选择Ollma还是vLLM?

在使用MaxKB开源知识库问答系统的过程中,除了对接在线大模型,一些用户出于资源配置、长期使用成本、安全性等多方面考虑,还在积极尝试通过Ollama、vLLM等模型推理框架对接本地离线大模型。而在用户实践的过程中,经常会对候选的模型…

计算机网络八股整理(一)

计算机网络八股文整理 一:网络模型 1:网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型,它由七层组成,从上到下分别是:应用层,表示层,会话层,传输层,…

Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序

在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序 IntelliJ IDEA 是一个用 Java 编写的集成开发环境 (IDE)。它用于开发计算机软件。此 IDE 由 Jetbrains 开发,提供 Apache 2 许可社区版和商业版。它是一种智能的上下文感知 IDE,可用于在各种应用程序…

单片机学习笔记 9. 8×8LED点阵屏

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

vue 预览pdf 【@sunsetglow/vue-pdf-viewer】开箱即用,无需开发

sunsetglow/vue-pdf-viewer 开箱即用的pdf插件sunsetglow/vue-pdf-viewer, vue3 版本 无需多余开发,操作简单,支持大文件 pdf 滚动加载,缩放,左侧导航,下载,页码,打印,文本复制&…

Css—实现3D导航栏

一、背景 最近在其他的网页中看到了一个很有趣的3d效果,这个效果就是使用css3中的3D转换实现的,所以今天的内容就是3D的导航栏效果。那么话不多说,直接开始主要内容的讲解。 二、效果展示 三、思路解析 1、首先我们需要将这个导航使用一个大…

重新定义社媒引流:AI社媒引流王如何为品牌赋能?

在社交媒体高度竞争的时代,引流已经不再是单纯追求流量的数字游戏,而是要找到“对的用户”,并与他们建立真实的连接。AI社媒引流王通过技术创新和智能策略,重新定义了社媒引流的方式,帮助品牌在精准触达和高效互动中脱…

Docker1:认识docker、在Linux中安装docker

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

Centos 8, add repo

Centos repo前言 Centos 8更换在线阿里云创建一键更换repo 自动化脚本 华为Centos 源 , 阿里云Centos 源 华为epel 源 , 阿里云epel 源vim /centos8_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.han