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

news2024/11/26 23:00:02

目录

  • 一、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.coloradmin.cn/o/2248080.html

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

相关文章

ArcGIS应用指南:ArcGIS制作局部放大地图

在地理信息系统(GIS)中,制作详细且美观的地图是一项重要的技能。地图制作不仅仅是简单地将地理数据可视化,还需要考虑地图的可读性和美观性。局部放大图是一种常见的地图设计技巧,用于展示特定区域的详细信息&#xff…

python画图|无坐标轴自由划线操作fig.add_artist(lines.Line2D()函数

【1】引言 新发现了一种自由划线操作函数,和大家共享。 【2】官网教程 点击下述代码,直达官网: https://matplotlib.org/stable/gallery/misc/fig_x.html#sphx-glr-gallery-misc-fig-x-py 官网代码非常简洁,我进行了解读。 …

深度解析:Nginx模块架构与工作机制的奥秘

文章目录 前言Nginx是什么?Ngnix特点: 一、Nginx模块与工作原理1.Nginx的模块1.1 Nginx模块常规的HTTP请求和响应的流程图:1.2 Nginx的模块从结构上分为如下三类:1.3 Nginx的模块从功能上分为如下三类: 2.Nginx的进程模型2.1 Nginx进程结构2.2 nginx进程…

抖音SEO矩阵系统:开发技术分享

市场环境剖析 短视频SEO矩阵系统是一种策略,旨在通过不同平台上的多个账号建立联系,整合同一品牌下的各平台粉丝流量。该系统通过遵循每个平台的规则和内容要求,输出企业和品牌形象,以矩阵形式增强粉丝基础并提升商业价值。抖音作…

面试经典 150 题:205,55

205. 同构字符串 【解题思路】 来自大佬Krahets 【参考代码】 class Solution { public:bool isIsomorphic(string s, string t) {map<char, char> Smap, Tmap;for(int i0; i<s.size(); i){char a s[i], b t[i];//map容器存在该字符&#xff0c;且不等于之前映射…

STM32 Keil5 attribute 关键字的用法

这篇文章记录一下STM32中attribute的用法。之前做项目的时候产品需要支持远程升级&#xff0c;要求版本只能向上迭代&#xff0c;不支持回退。当时想到的方案是把版本号放到bin文件的头部&#xff0c;设备端收到bin文件的首包部数据后判断是否满足升级要求&#xff0c;这里就可…

【Redis 缓存策略】更新、穿透、雪崩、击穿、布隆过滤

目录 缓存简单介绍 缓存更新策略 缓存更新需求 数据库缓存不一致解决方案 先操作缓存还是先操作数据库&#xff1f; 先删除缓存&#xff0c;再操作数据库 先操作数据库&#xff0c;再删除缓存 总结 删除缓存还是更新缓存&#xff1f; 保证缓存与数据库的操作的同时成功或失败 …

利用c语言详细介绍下栈的实现

数据结构中&#xff0c;栈是一种线性结构&#xff0c;数据元素遵循后进先出的原则。栈的一端为栈顶&#xff0c;一端为栈底或栈尾&#xff0c;数据只在栈顶端进行操作。新插入数据称为入栈或者压栈&#xff0c;删除数据叫做出栈或者退栈。 一、图文介绍 我们通过建立一个stack…

5.5 W5500 TCP服务端与客户端

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

Transformer详解及衍生模型GPT|T5|LLaMa

简介 Transformer 是一种革命性的神经网络架构&#xff0c;首次出现在2017年的论文《Attention Is All You Need》中&#xff0c;由Google的研究团队提出。与传统的RNN和LSTM模型不同&#xff0c;Transformer完全依赖于自注意力&#xff08;Self-Attention&#xff09;机制来捕…

计算机网络基础全攻略:探秘网络构建块(1/10)

一、计算机网络基础概念 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路和通信设备连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统…

Android 应用测试的各种环境问题记录(Instrumentation测试)

报错记录 failed to configure packages targetSdkVersion&#xff08;未解决&#xff09; failed to configure com.demo.test.SettingsActivityTest.testOnCreate_withNullSavedInstanceState: Package targetSdkVersion34 > maxSdkVersion32 java.lang.IllegalArgumentE…

Python 爬虫从入门到(不)入狱学习笔记

爬虫的流程&#xff1a;从入门到入狱 1 获取网页内容1.1 发送 HTTP 请求1.2 Python 的 Requests 库1.2 实战&#xff1a;豆瓣电影 scrape_douban.py 2 解析网页内容2.1 HTML 网页结构2.2 Python 的 Beautiful Soup 库 3 存储或分析数据&#xff08;略&#xff09; 一般爬虫的基…

周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程

1、打开pycharm 没有pycharm的&#xff0c;在站内搜索安装教程即可。 2、点击“文件”“新建项目” 3、创建项目&#xff0c;Python版本中选择Python39。如果没有该版本&#xff0c;选择下面的Python 3.9下载并安装。 4、打开软件包&#xff0c;搜索“deep-forest”软件包&am…

用python将一个扫描pdf文件改成二值图片组成的pdf文件

使用墨水屏读书现在似乎越来越流行&#xff0c;这确实有一定的好处&#xff0c;例如基本不发热&#xff0c;电池续航时间超长&#xff0c;基本不能游戏所以有利于沉浸式阅读&#xff0c;还有不知道是不是真的有用的所谓防蓝光伤害。但是&#xff0c;如果阅读的书籍是扫描图片组…

前端---HTML(一)

HTML_网络的三大基石和html普通文本标签 1.我们要访问网络&#xff0c;需不需要知道&#xff0c;网络上的东西在哪&#xff1f; 为什么我们写&#xff0c;www.baidu.com就能找到百度了呢&#xff1f; 我一拼ping www.baidu.com 就拼到了ip地址&#xff1a; [119.75.218.70]…

电影风格城市夜景旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 电影风格城市夜景旅拍通过 Lightroom 调色&#xff0c;将城市夜晚的景色打造出如同电影画面般的质感和氛围。以独特的色彩和光影处理&#xff0c;展现出城市夜景的魅力与神秘。 预设信息 调色风格&#xff1a;电影风格预设适合类型&#xff1a;人像&#xff0c;街拍…

【多模态】Flamingo模型技术学习

Flamingo模型技术学习 前言Flamingo——支持上下文学习的多模态模型模型架构模型架构——Resampler模型架构——插入到LLM的cross-attention层 代码查看——masked cross-attentionnote 前言 最近多模态模型特别火&#xff0c;从头开始学习&#xff01;在前面写的几篇里面学习了…

C 语言学习-06【指针】

1、目标单元与简介存取 直接访问和间接访问 #include <stdio.h>int main(void) {int a 3, *p;p &a;printf("a %d, *p %d\n", a, *p);*p 10;printf("a %d, *p %d\n", a, *p);printf("Enter a: ");scanf("%d", &a)…

ctfshow单身杯2024wp

文章目录 ctfshow单身杯2024wp签到好玩的PHPezzz_sstiez_inject ctfshow单身杯2024wp 签到好玩的PHP 考点&#xff1a;序列化反序列化 <?phperror_reporting(0);highlight_file(__FILE__);class ctfshow {private $d ;private $s ;private $b ;private $ctf ;public …