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

python版本管理工具-pyenv轻松切换多个Python版本

在使用python环境开发时,相信肯定被使用版本所烦恼,在用第三方库时依赖兼容的python版本不一样,有没有一个能同时安装多个python并能自由切换的工具呢,那就是pyenv,让你可以轻松切换多个Python 版本。

pyenv是什么

pyenv 让你可以轻松切换多个 Python 版本。它简单、低调,并遵循 UNIX 统一规范。

image

pyenv功能特点

  • 允许你按用户更改全局 Python 版本。
  • 支持每个项目指定 Python 版本。
  • 允许你通过环境变量覆盖 Python 版本。
  • 可以同时从多个Python版本中查找命令,这对于用 tox 跨版本测试很有帮助。

不同,pyenv与 pythonbrew 和 pythonz 不同

依赖 Python 本身。pyenv 完全由 shell 脚本编写,无需 Python 启动。
需要加载到你的 shell。pyenv 采用 shim 机制,只需将目录加入 PATH
管理 virtualenv。你可以自己创建 virtualenv,或用 pyenv-virtualenv 自动化。

使用文档地址:

https://pyenv.uihtm.com

pyenv安装

Linux/Unix/MacOS

如果你已安装 Homebrew,MacOS的 Homebrew 选项同样适用。

1.自动安装器(推荐)

curl -fsSL https://pyenv.run | bash

MacOS

上面Linux部分的选项也可以使用,但建议基本使用Homebrew

Homebrew(macOS 下)
更新 homebrew 并安装 pyenv:

brew update
brew install pyenv

Windows

yenv 官方不支持 Windows,且在 Windows 下无法运行(除非在 WSL)。 此外,即使在 WSL,安装的 Python 也是 Linux 版而非原生 Windows 版, 因此无法获得 Windows 特有功能。

在 Windows 下,推荐使用 pyenv-win

它可安装原生 Windows Python。

PowerShell下安装pyenv-win

Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

2.重新打开PowerShell

执行 pyenv --version 输入已安装的pyenv版本号
执行 pyenv install -l检测可安装的版本Python版本列表
执行 pyenv install 安装指定Python版本
执行 pyenv global 设置 pythone全局版本

image

pyenv-win 命令行大全

  • pyenv local 设置或显示特定应用程序的本地Python版本
  • pyenv latest 打印带有指定前缀的最新已安装或已知版本
  • pyenv global 设置或显示全局Python版本
  • pyenv shell 设置或显示特定shell的Python版本
  • pyenv install 安装一个或多个Python版本
  • pyenv uninstall 卸载一个或多个Python版本
  • pyenv update 更新缓存的版本数据库
  • pyenv rehash 重新生成pyenv shims(切换Python版本后运行此命令)
  • pyenv vname 显示当前Python版本
  • pyenv version 显示当前Python版本及其来源
  • pyenv version-name 显示当前Python版本
  • pyenv versions 列出pyenv可用的所有Python版本
  • pyenv exec 运行可执行文件(首先配置PATH,使所选Python版本的`bin’目录位于最前端)
  • pyenv which 显示可执行文件的完整路径
  • pyenv whence 列出包含指定可执行文件的所有Python版本

总结:pyenv 是一个用于管理多个 Python 版本的工具,特别适合在开发环境中使用。它允许用户在同一台机器上轻松切换不同版本的 Python,而不会影响系统默认的 Python 环境。以下是 pyenv 的主要功能和使用场景:

主要功能

  1. 多版本管理pyenv 可以安装和管理多个 Python 版本,包括 CPython、PyPy、Anaconda 等。用户可以根据项目需求选择特定的 Python 版本。
  2. 版本切换:通过简单的命令,用户可以在全局、项目或当前 shell 会话中切换 Python 版本。
  3. 虚拟环境支持pyenv 可以与 pyenv-virtualenv 插件结合使用,创建和管理独立的 Python 虚拟环境,避免依赖冲突。
  4. 自动版本选择:通过 .python-version 文件,pyenv 可以自动为项目选择正确的 Python 版本。

安装步骤

  1. 安装依赖:在 Linux 或 macOS 上,需要安装一些依赖工具,如 gitcurl
    sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
    libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev \
    liblzma-dev python-openssl git
    
  2. 安装 pyenv:使用以下命令安装 pyenv
    curl https://pyenv.run | bash
    
  3. 配置环境变量:将 pyenv 添加到 shell 的配置文件中(如 ~/.bashrc~/.zshrc):
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
    echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    source ~/.bashrc
    

常用命令

  1. 安装 Python 版本
    pyenv install 3.9.7
    
  2. 查看已安装的 Python 版本
    pyenv versions
    
  3. 设置全局 Python 版本
    pyenv global 3.9.7
    
  4. 设置项目 Python 版本
    pyenv local 3.8.12
    
  5. 创建虚拟环境(需安装 pyenv-virtualenv):
    pyenv virtualenv 3.9.7 myenv
    
  6. 激活虚拟环境
    pyenv activate myenv
    

应用场景

  1. 多项目开发:在同时开发多个项目时,每个项目可能需要不同的 Python 版本或依赖库。pyenv 可以帮助开发者快速切换环境,避免冲突。
  2. 测试兼容性:开发者可以使用 pyenv 安装多个 Python 版本,测试代码在不同版本下的兼容性。
  3. 教学与学习:在学习 Python 时,pyenv 可以方便地安装和切换不同版本,帮助理解 Python 的版本差异。

插件扩展

  1. pyenv-virtualenv:用于管理虚拟环境,支持创建、删除和切换虚拟环境。
  2. pyenv-update:用于更新 pyenv 及其插件到最新版本。
  3. pyenv-which-ext:用于查找特定命令的路径,帮助调试环境问题。

通过 pyenv,开发者可以更高效地管理 Python 环境,提升开发体验。

相关文章:

python版本管理工具-pyenv轻松切换多个Python版本

在使用python环境开发时,相信肯定被使用版本所烦恼,在用第三方库时依赖兼容的python版本不一样,有没有一个能同时安装多个python并能自由切换的工具呢,那就是pyenv,让你可以轻松切换多个Python 版本。 pyenv是什么 p…...

Elasticsearch索引全生命周期管理指南之一

#作者:猎人 文章目录 一、索引常规操作二、索引mapping和别名管理 一、索引常规操作 索引数据特点: 索引中的数据随着时间,持续不断增长 按照时间序列划分索引的好处&挑战: 按照时间进行划分索引,会使得管理更加…...

STM32F407VET6的HAL库使用CRC校验的思路

CRC校验在数据传输快,且量大的时候使用。 步骤实现: CubeMX配置 c // 在CubeMX中启用CRC模块 // AHB总线时钟自动启用 HAL库代码 c // 初始化(main函数中) CRC_HandleTypeDef hcrc; hcrc.Instance CRC; hcrc.Init.Default…...

【Manim】使用manim画一个高斯分布的动画

1 Manim例子一 最近接触到manim,觉得挺有趣的,来玩一玩把。如下是一个使用manim画的高斯分布的动画。 from manim import * import numpy as npclass GaussianDistribution(Scene):def construct(self):# 创建坐标系axes Axes(x_range[-4, 4, 1],y_ra…...

elementUI 循环出来的表单,怎么做表单校验?

数据结构如下&#xff1a; diversionParamList: [ { length: null, positionNumber: null, value: null, } ] 思路&#xff1a;可根据 index 动态绑定 :props 属性值&#xff0c;校验规则写在:rules <div class"config-item" v-for"(item, index) in form.…...

Leetcode76覆盖最小子串

覆盖最小子串 代码来自b站左程云 class Solution {public String minWindow(String str, String tar) {char[] s str.toCharArray();char[] t tar.toCharArray();int[] cnt new int[256];for (char cha : t) { cnt[cha]--;}int len Integer.MAX_VALUE;int debt t.length…...

电力杆塔安全监测解决方案

一、方案背景 在台风、滑坡等自然灾害出现时&#xff0c;极易产生倒杆、断杆、杆塔倾斜、塔基滑动等致使杆塔失稳的状况&#xff0c;进而引发导线断线、线路跳闸等事故&#xff0c;给电网的安全稳定运行造成影响。可借助在铁塔上装设的传感器&#xff0c;能够感知铁塔的工作状态…...

AD 常用系统快捷键

(1) L: 打开层设置开关选项(在元件移动状态下&#xff0c;按下“L”键换层) (2) S: 打开选择&#xff0c;如SL(线选)、SI(框选)、SE(滑动选择) (3) J: 跳转&#xff0c;如JC(跳转到元件)、JN(跳转到网络) (4) CtrlQ: 英寸和毫米相互切换。 (5) Delete: 删除已被选择的对象 E…...

今日行情明日机会——20250516

上证缩量收阴线&#xff0c;小盘股表现相对更好&#xff0c;上涨的个股大于下跌的&#xff0c;日线已到前期压力位附近&#xff0c;注意风险。 深证缩量收假阳线&#xff0c;临近日线周期上涨末端&#xff0c;注意风险。 2025年5月16日涨停股行业方向分析 机器人概念&#x…...

AlphaEvolve:LLM驱动的算法进化革命与科学发现新范式

AlphaEvolve&#xff1a;LLM驱动的算法进化革命与科学发现新范式 本文聚焦Google DeepMind最新发布的AlphaEvolve&#xff0c;探讨其如何通过LLM与进化算法的结合&#xff0c;在数学难题突破、计算基础设施优化等领域实现革命性进展。从48次乘法优化44矩阵相乘到数据中心资源利…...

多尺度对比度调整

一、背景介绍 受到了前面锐化算法实现的启发&#xff0c;对高频层做增强是锐化&#xff0c;那么对中低频一起做增强&#xff0c;就应该能有局域对比度增强效果。 直接暴力实现了个基本版本&#xff0c;确实有对比度增强效果。然后搜了下关键字&#xff0c;还真找到了已经有人这…...

解决IDEA Maven编译时@spring.profiles.active@没有替换成具体环境变量的问题

如果不加filtering true&#xff0c;编译后的文件还是 spring.profiles.active 编译前的application.yml 编译后的application.yml【环境变量没有改变】 解决方案 找到 SpringBoot 启动类所在的pom.xml&#xff0c;在 resources 增加 filtering true&#xff0c;然后重新…...

博客系统技术需求文档(基于 Flask)

以下内容是AI基于要求生成的技术文档&#xff0c;仅供参考~ &#x1f9f1; 一、系统架构设计概览 层级 内容 前端层 HTML Jinja2 模板引擎&#xff0c;集成 Markdown 编辑器、代码高亮 后端层 Flask 框架&#xff0c;RESTful 风格&#xff0c;Jinja2 渲染 数据库 SQLi…...

记参加一次数学建模

题目请到全国大学生数学建模竞赛下载查看。 注&#xff1a;过程更新了很多文件&#xff0c;所有这里贴上的有些内容不是最新的&#xff08;而是草稿&#xff09;。 注&#xff1a;我们队伍并没有获奖&#xff0c;文章内容仅供一乐。 从这次比赛&#xff0c;给出以下赛前建议 …...

TC8:SOMEIP_ETS_029-030

SOMEIP_ETS_029: echoUINT8Array16Bitlength 目的 检查当method echoUINT8Array16BitLength的参数中长度字段为16bit时,SOME/IP协议层是否能对参数进行序列化和反序列化。 对于可变长度的数组而言,必须用长度字段表示数组长度。否则接收方无法判断有效数据。 SOMEIP_ETS_02…...

PYTHON训练营DAY27

装饰器 编写一个装饰器 logger&#xff0c;在函数执行前后打印日志信息&#xff08;如函数名、参数、返回值&#xff09; logger def multiply(a, b):return a * bmultiply(2, 3) # 输出: # 开始执行函数 multiply&#xff0c;参数: (2, 3), {} # 函数 multiply 执行完毕&a…...

Maven使用详解:Maven的概述(二)

一、核心定义与功能 Maven是由Apache软件基金会开发的开源项目管理工具&#xff0c;专为Java项目设计&#xff0c;主要用于自动化构建、依赖管理和项目标准化。其核心功能包括&#xff1a; 依赖管理&#xff1a;通过pom.xml文件声明依赖库&#xff0c;自动从中央仓库下载并管…...

printspoofer的RPC调用接口的简单代码

&#x1f9e0; 问题背景&#xff1a;为什么不能“啥都不导库”就直接调用 RPC 接口&#xff1f; 因为&#xff1a; 你想调用的是 RPC 接口函数&#xff0c;比如 RpcRemoteFindFirstPrinterChangeNotificationEx&#xff1b; 它不是像 MessageBox() 那样的普通 API&#xff0c…...

刻录光盘--和炸铁路,tarjan

https://www.luogu.com.cn/problem/P2835 多做多看多想&#xff0c;一切都会水到渠成 受欢迎的牛--tarjan缩点图论出度-CSDN博客 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> pii; int n,m; ve…...

新型智慧园区技术架构深度解析:数字孪生与零碳科技的融合实践

&#x1f3ed;在杭州亚运村零碳园区&#xff0c;光伏板与氢燃料大巴构成的能源网络&#xff0c;正通过数字孪生技术实现智能调度。这不仅是格力电器与龙源电力在新能源领域的创新实践&#xff0c;更是智慧园区4.0时代的标杆案例。当AI算法开始接管能源调度&#xff0c;当BIM建模…...

lo(Loopback 接口)详解

lo&#xff08;Loopback 接口&#xff09;详解 lo 是 Loopback&#xff08;环回&#xff09;接口&#xff0c;它是一个虚拟网络接口&#xff0c;主要用于 本地通信&#xff0c;不依赖物理网卡。所有操作系统&#xff08;包括 Linux、Windows、macOS&#xff09;默认都会创建 l…...

duxapp 2025-03-29 更新 编译结束的复制逻辑等

CLI copy 文件夹内的内容支持全量复制优化小程序配置文件合并逻辑&#xff08;更新后建议将 project.config.json 文件从git的追踪中移除&#xff09;新增 copy.build.complete 文件夹的复制逻辑&#xff0c;会在程序编译结束之后将文件复制到指定位置 &#xff08;模块和用户…...

《构建社交应用的安全结界:双框架对接审核API的底层逻辑与实践》

用户生成内容如潮水般涌来。从日常的生活分享&#xff0c;到激烈的观点碰撞&#xff0c;这些内容赋予社交应用活力&#xff0c;也带来管理难题。虚假信息、暴力言论、侵权内容等不良信息&#xff0c;如同潜藏的暗礁&#xff0c;威胁着社交平台的健康生态。内容审核机制&#xf…...

网络世界的“百变身份“:动态IP让连接更自由

深夜的程序调试​​ 凌晨两点&#xff0c;我盯着电脑屏幕上的报错信息&#xff1a;"Connection timed out"。这是本周第三次测试服务器响应时被拒绝访问了——只因为之前同一个IP地址尝试登录太过频繁。正在改代码的朋友小王凑过来看了眼&#xff1a;"老兄&…...

Linux基础开发工具大全

目录 软件包管理器 1>软件包 2>软件生态 3>yum操作 a.查看软件包 b.安装软件 c.卸载软件 4>知识点 vim编辑器 1>基本概念 2>基本操作 3>正常模式命令集 a.模式切换 b.移动光标 c.删除 d.复制 e.替换 f.撤销 g.更改 4>底行模式命令…...

【C/C++】C++中引用类型私有成员的设计与应用

文章目录 C中引用类型私有成员的设计与应用核心意义典型使用场景1. 依赖注入&#xff08;Dependency Injection&#xff09;2. 避免拷贝开销3. 实现不可变设计4. 接口约束 注意事项1. 生命周期管理2. 构造函数的强制性3. 不可重新绑定4. 与多态的结合 对比指针的优缺点总结 C中…...

网页工具-OTU/ASV表格物种分类汇总工具

AI辅助下开发了个工具&#xff0c;功能如下&#xff0c;分享给大家&#xff1a; 基于Shiny开发的用户友好型网页应用&#xff0c;专为微生物组数据分析设计。该工具能够自动处理OTU/ASV_taxa表格&#xff08;支持XLS/XLSX/TSV/CSV格式&#xff09;&#xff0c;通过调用QIIME1&a…...

存储器上如何存储1和0

在计算机存储器中&#xff0c;数据最终以**二进制形式&#xff08;0和1&#xff09;**存储&#xff0c;这是由硬件特性和电子电路的物理特性决定的。以下是具体存储方式的详细解析&#xff1a; 一、存储的物理基础&#xff1a;半导体电路与电平信号 计算机存储器&#xff08;…...

2025第三届盘古初赛(计算机部分)

前言 比赛的时候时间不对&#xff0c;打一会干一会&#xff0c;导致比赛时候思路都跟不上&#xff0c;赛后简单复现一下&#xff0c;希望大家批批一下 计算机取证 1、分析贾韦码计算机检材&#xff0c;计算机系统Build版本为&#xff1f;【标准格式&#xff1a;19000】 183…...

【源码级开发】Qwen3接入MCP,企业级智能体开发实战!

Qwen3接入MCP智能体开发实战&#xff08;上&#xff09; 一、MCP技术与Qwen3原生MCP能力介绍 1.智能体开发核心技术—MCP 1.1 Function calling技术回顾 如何快速开发一款智能体应用&#xff0c;最关键的技术难点就在于如何让大模型高效稳定的接入一些外部工具。而在MCP技术…...