【Python】pyenv:管理多版本 Python 环境的利器

news2024/11/28 6:41:41

点关注开车不迷路

在这里插入图片描述

pyenv 是一个强大的 Python 版本管理工具,它允许开发者在同一台计算机上轻松安装和管理多个 Python 版本。对于需要在不同项目中使用不同 Python 版本的开发者来说,pyenv 是一个非常有用的工具,因为它可以帮助用户在全局和项目级别控制 Python 版本,避免了版本冲突。

本文将介绍 pyenv 的主要功能、安装方法、使用技巧,并展示如何通过 pyenv 高效地管理 Python 环境。

华丽的分割线

➰缘起

    • 💯 pyenv 的主要特点
      • 1. 多版本 Python 安装和切换
      • 2. 全局和局部 Python 版本控制
      • 3. 安装定制 Python 版本
      • 4. 避免系统 Python 污染
      • 5. 简单易用的命令行界面
    • 💯 安装 pyenv
      • 1. 安装依赖项
      • 2. 安装 pyenv
    • 💯 pyenv 的基本使用
      • 1. 查看可用的 Python 版本
      • 2. 安装 Python 版本
      • 3. 设置全局 Python 版本
      • 4. 设置局部 Python 版本
      • 5. 查看已安装的 Python 版本
      • 6. 卸载 Python 版本
    • 💯 高级功能
      • 1. 使用 pyenv-virtualenv 管理虚拟环境
      • 2. 自动激活虚拟环境
      • 3. 升级 pyenv
    • 💯 应用场景
    • 📥 下载地址
    • 💬 结语
    • 📒 参考文献


标题1

💯 pyenv 的主要特点

1. 多版本 Python 安装和切换

pyenv 允许在同一台机器上安装多个 Python 版本,并根据需要快速切换不同的版本。无论你是需要 Python 2.x 版本的支持,还是正在使用最新的 Python 3.x 版本,pyenv 都能满足你的需求。

2. 全局和局部 Python 版本控制

pyenv 支持为系统设置全局 Python 版本,也支持为每个项目设置局部 Python 版本。这意味着在不同项目中可以使用不同的 Python 版本,而不会相互干扰。

3. 安装定制 Python 版本

除了官方的 Python 版本,pyenv 还支持安装定制版本,例如 Anaconda、PyPy 等。开发者可以根据项目需求选择合适的 Python 版本和解释器,灵活性非常高。

4. 避免系统 Python 污染

通过 pyenv 管理 Python 版本,可以避免修改系统自带的 Python 版本,确保系统和开发环境之间相互隔离。这在需要频繁更改 Python 版本的开发者中非常实用,尤其是在 Linux 和 macOS 系统上。

5. 简单易用的命令行界面

pyenv 提供了简洁易用的命令行界面,开发者可以通过简单的命令来安装、删除、切换和管理 Python 版本,大大简化了版本管理的工作流程。


标题2

💯 安装 pyenv

1. 安装依赖项

在安装 pyenv 之前,首先需要确保系统中已经安装了构建 Python 版本所需的依赖项。不同的操作系统依赖项可能不同,以下是在 macOS 和 Ubuntu 上安装依赖项的命令:

  • macOS

    使用 Homebrew 安装依赖项:

    brew update
    brew install openssl readline sqlite3 xz zlib
    
  • Ubuntu

    使用 APT 安装依赖项:

    sudo apt update
    sudo apt 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

接下来,通过 Git 克隆 pyenv 仓库到本地:

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

然后,将 pyenv 添加到 shell 的初始化脚本中,以便在终端启动时自动加载 pyenv。对于不同的 shell,可以在对应的配置文件中添加以下代码:

  • Bash

    将以下内容添加到 ~/.bashrc 中:

    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    
  • Zsh

    将以下内容添加到 ~/.zshrc 中:

    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    

保存配置文件后,重新启动终端或者运行 source ~/.bashrcsource ~/.zshrc 来使更改生效。


标题3

💯 pyenv 的基本使用

1. 查看可用的 Python 版本

你可以使用以下命令查看 pyenv 支持安装的所有 Python 版本:

pyenv install --list

该命令会列出所有可以安装的 Python 版本,包括稳定版本、开发版本、旧版本等。

2. 安装 Python 版本

要安装特定的 Python 版本,例如 3.9.7,可以运行以下命令:

pyenv install 3.9.7

安装完成后,pyenv 会将该版本添加到你的本地 Python 版本列表中。

3. 设置全局 Python 版本

如果你希望将某个 Python 版本设置为系统的默认版本,可以使用 global 命令。例如,将 Python 3.9.7 设置为全局默认版本:

pyenv global 3.9.7

这样,所有在系统中运行的 Python 脚本都会使用该版本的 Python 解释器。

4. 设置局部 Python 版本

pyenv 允许你为每个项目设置特定的 Python 版本。在项目目录下运行以下命令,可以为该项目设置一个局部的 Python 版本:

pyenv local 3.9.7

pyenv 会在该项目的目录中生成一个 .python-version 文件,保存局部 Python 版本信息。当你进入该目录时,pyenv 会自动切换到指定的 Python 版本。

5. 查看已安装的 Python 版本

你可以使用以下命令查看当前已安装的 Python 版本:

pyenv versions

该命令会列出所有已经安装的 Python 版本,并标注当前正在使用的版本。

6. 卸载 Python 版本

如果你不再需要某个 Python 版本,可以使用以下命令将其卸载:

pyenv uninstall 3.9.7

标题4

💯 高级功能

1. 使用 pyenv-virtualenv 管理虚拟环境

pyenv 还可以与 pyenv-virtualenv 一起使用,用于创建和管理虚拟环境。虚拟环境允许你在不同项目中隔离 Python 包的依赖,避免版本冲突。

首先,通过以下命令安装 pyenv-virtualenv 插件:

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

安装完成后,重新启动终端或运行 source ~/.bashrc 以使更改生效。

使用 pyenv virtualenv 命令创建虚拟环境。例如,创建一个基于 Python 3.9.7 的虚拟环境:

pyenv virtualenv 3.9.7 myenv

要激活虚拟环境,可以运行以下命令:

pyenv activate myenv

要停用当前的虚拟环境,可以运行:

pyenv deactivate

2. 自动激活虚拟环境

pyenv-virtualenv 支持自动激活虚拟环境。当你在项目目录下创建了 .python-version 文件后,pyenv 会在进入该目录时自动激活对应的虚拟环境。你可以使用以下命令设置局部虚拟环境:

pyenv local myenv

每当你进入这个目录时,myenv 虚拟环境就会自动激活,退出目录时虚拟环境会自动停用。

3. 升级 pyenv

要升级 pyenv 到最新版本,可以运行以下命令:

cd $(pyenv root)
git pull

该命令会从 GitHub 拉取最新的 pyenv 代码并更新你的本地版本。


标题5

💯 应用场景

  1. 多项目开发:在不同项目中使用不同的 Python 版本和包依赖,通过 pyenv 和 pyenv-virtualenv,你可以为每个项目配置独立的 Python 环境,避免包版本冲突。

  2. 测试不同 Python 版本:开发者可以轻松安装和切换多个 Python 版本,帮助测试代码在不同 Python 版本上的兼容性,特别是在开发开源项目时,确保项目支持多个 Python 版本。

  3. 隔离开发环境:通过 pyenv,你可以避免污染系统的全局 Python 版本,确保开发环境与系统环境分离,这在需要同时维护多个 Python 项目的时候尤为重要。


标题6

📥 下载地址


pyenv 最新版 下载地址


标题7

💬 结语

pyenv 是一个功能强大且易于使用的 Python 版本管理工具,特别适合需要在多项目中使用不同 Python 版本的开发者。通过 pyenv,你可以轻松安装和管理多个 Python 版本,并在不同项目中自由切换。此外,结合 pyenv-virtualenv,你还可以创建和管理虚拟环境,进一步提升开发效率和环境隔离。

如果你经常需要处理不同的 Python 版本,或者希望更好地管理开发环境,pyenv 无疑是一个值得推荐的工具。


标题8

📒 参考文献

  • pyenv GitHub仓库

剩蛋快乐


愿者上钩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2189624.html

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

相关文章

PCL 给点云添加高斯噪声并保存

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 添加高斯噪声实现 2.1.2 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新&…

角色动画——RootMotion全解

1. Unity(2022)的应用 由Animtor组件控制 在Animation Clip下可进行详细设置 ​ 官方文档的介绍(Animation选项卡 - Unity 手册) 上述动画类型在Rag选项卡中设置: Rig 选项卡上的设置定义了 Unity 如何将变形体映射到导入模型中的网格,以便能够将其动画化。 对于人…

污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标,10000余张图像,yolo格式目标检测,9GB数据量。

污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标(1 合流下水道,2 雨水,3 工业废水,4 农业排水,5 牲畜养殖,6 水产养殖,7 地表径流,8 废水处理厂&…

yub‘s Algorithmic Adventures_Day5

Day5 反转链表 link:206. 反转链表 - 力扣(LeetCode) 思路分析 与数组不同,链表没必要定义新的链表进行存储【对内存空间的浪费】 直接改变next指针即可. 注意头节点指向的下一个节点为null 双指针法 class Solution {publi…

杂谈c语言——6.浮点数的存储

1.浮点数在内存中的存储 常⻅的浮点数&#xff1a;3.14159、1E10等&#xff0c;浮点数家族包括&#xff1a; float、double、long double 类型。 浮点数表⽰的范围&#xff1a; float.h 中定义 1.1 练习 #include<stdio.h>int main() {int n 9;float* pFloat (floa…

Golang | Leetcode Golang题解之第456题132模式

题目&#xff1a; 题解&#xff1a; func find132pattern(nums []int) bool {candidateI, candidateJ : []int{-nums[0]}, []int{-nums[0]}for _, v : range nums[1:] {idxI : sort.SearchInts(candidateI, 1-v)idxJ : sort.SearchInts(candidateJ, -v)if idxI < idxJ {ret…

智能视界·大模型驱动视频矩阵管理系统

开头先配两张ER图 一张不带字段&#xff0c;一张带字段&#xff0c;剩下的内容按需拿取 1.产品介绍 产品名称&#xff1a; 智能视界大模型驱动视频矩阵管理系统 主要功能&#xff1a; 智能视频分析与识别 功能介绍&#xff1a;该系统集成先进的人工智能大模型&#xff0c;能…

热轧钢带缺陷数据集,Xsteel表面缺陷数据集(X-SDD),其中包含七种典型的热轧带钢缺陷类型,共有1360个缺陷图像。

热轧钢带缺陷数据集&#xff0c;称为Xsteel表面缺陷数据集&#xff08;X-SDD&#xff09;&#xff0c;其中包含七种典型的热轧带钢缺陷类型&#xff0c;共有1360个缺陷图像。与常用的NEU表面缺陷数据库&#xff08;NEU-CLS&#xff09;的六种缺陷类型相比&#xff0c;X-SDD包含…

Ray_Tracing_The_Next_Week

1动态模糊 动态模糊在摄影中就是快门的速度慢&#xff0c;捕捉光的时间长&#xff0c;物体运动时进行捕捉成像&#xff0c;拍出来的结果是这个运动过程每一帧的平均值 我们的思路是&#xff1a; 每一条光线都拥有自己存在的一个时间点。随着时间变化随机生成光线,一般来说我…

全新芒果YOLOv10改进135:最新注意力机制EMA:即插即用,具有跨空间学习的高效多尺度注意力模块,ICCASSP 2023

💡本篇内容:芒果YOLOv10改进135:最新注意力机制EMA:即插即用,具有跨空间学习的高效多尺度注意力模块,ICCASSP 2023 **具有跨空间学习的高效多尺度注意力模块EMA | 即插即用 该模块通常包括多个并行的注意力子模块,每个子模块关注于输入数据的不同尺度或分辨率。这些子模块…

Study-Oracle-10-ORALCE19C-RAC集群维护

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。 一、RAC的逻辑架构与进程 1、RAC 与单实例进程的对比 2、RAC相关进程功能 3、在主机查看RAC进程 其他的不列举了 4、RAC集群启停命令 检查集群状态 ORACLE 19C …

2-112基于matlab的协同干扰功率分配模型

基于matlab的协同干扰功率分配模型&#xff0c;带操作界面的功率分配GUI&#xff0c;可以实现对已有功率的分配优化&#xff0c;可以手动输入参数值。4个干扰山区分二批总干扰功率&#xff0c;每个扇区包括威胁总系数、综合压制概率、目标函数增量等。程序已调通&#xff0c;可…

无源有损耗导电介质的平面电磁波——复数介电常数带来复波数k(导致幅度衰减)和复波阻抗(带来磁场电场相位不同)

推导中以εμσ是实数为假设 注意在线性介质中J 0和σ等于0其实是一个条件&#xff0c;因为J σE 线性介质的麦克斯韦方程 线性介质无源无损耗条件下 线性介质无源有损耗导电介质下 无源有损耗的复数麦克斯韦方程组&#xff0c;只有方程二与无源无损耗的麦克斯韦方程组不同…

【Linux】使Ubuntu自适应窗口大小并与主机共享文件

LInux虚拟机版本ubuntu-20.04.6&#xff0c;VM版本VMware Workstation 17 Pro VMware Tools™ 是一组服务和模块&#xff0c;是VMware公司在其虚拟化平台中提供的一套工具集&#xff0c;旨在提高虚拟机的性能和稳定性。它们支持 VMware 产品中的多种功能特性&#xff0c;有助于…

TX-LCN框架 分布式事务

一、三种事务模式 1&#xff09;LCN 基于XA协议&#xff0c;事务提交或回滚的操作由事务管理服务器统一告诉它管理的多个项目&#xff0c;也就是说在A事务&#xff0c;B事务的事务提交操作或回滚操作都是在同一时刻发生&#xff0c;并且要么都提交&#xff0c;要么都回滚。 LCN…

.NET开源跨平台桌面和移动应用的统一框架 - Eto.Forms

前言 今天大姚给大家分享一个.NET开源、跨平台桌面和移动应用的统一框架&#xff1a;Eto.Forms。 项目介绍 Eto.Forms是一个.NET开源、跨平台的桌面和移动应用的统一框架&#xff0c;该框架允许开发者使用单一的UI代码库构建在多个平台上运行的应用程序&#xff0c;并利用各…

如何修改银河麒麟高级服务器操作系统修改网卡名称(如从ens33到eth0)

如何修改银河麒麟高级服务器操作系统修改网卡名称&#xff08;如从ens33到eth0&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 查找并修改配置文件&#xff1a; 使用ifconfig查看网卡名称&#xff08;如enp1s0&#xff09;。找…

小白快速上手 Docker 03 | Docker数据卷

数据卷 在前面使用Docker时&#xff0c;可能会遇到以下几个问题&#xff1a; 当Docker 里的容器挂了以后打不开&#xff0c;这时候只有删除该容器了&#xff0c;但删除容器会连容器中的产生的数据也一起删除了&#xff0c;大部分场景下这是不能接受的。Docker容器与容器之间不…

【D3.js in Action 3 精译_028】3.4 小节 DIY 实战:使用 Observable 在线绘制 D3 条形图

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

渗透测试入门学习——使用python脚本自动跟踪csrf_token实现对网站登录界面的暴力破解

目录 写在前面 使用方法 相关代码 写在前面 最近在学习使用Burp Suite时发现其intruder模块无法实现多种模式的混合使用&#xff0c;就如想要暴力破解账号和口令两个区域并同时跟踪网页的csrf_token时BP似乎不能很方便的实现这一功能&#xff0c;于是自己在练习时就想到了用…