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

点关注开车不迷路

在这里插入图片描述

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.xdnf.cn/news/1554906.html

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

相关文章

C/C++/EasyX——入门图形编程(4)

【说明】紧接上文(。・ω・。),好了,接下来,就让我们开始学习图像处理和获取鼠标消息的函数吧。(各位友友们不要着急,想在短时间内就想做小游戏或者写出各种好看的画面是不简…

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

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

【深度学习基础模型】深度残差网络(Deep Residual Networks, DRN)详细理解并附实现代码。

【深度学习基础模型】深度残差网络(Deep Residual Networks, DRN)详细理解并附实现代码。 【深度学习基础模型】深度残差网络(Deep Residual Networks, DRN)详细理解并附实现代码。 文章目录 【深度学习基础模型】深度残差网络&a…

使用前端三剑客实现一个备忘录

一,界面介绍 这个备忘录的界面效果如下: 可以实现任务的增删,并且在任务被勾选后会被放到已完成的下面。 示例: (1),增加一个任务 (2),勾选任务 &#xff…

Chat登录时出现SSO信息出错的解决方法

目录 1. 问题所示2. 问题所示3. 解决方法 1. 问题所示 此贴主要是总结回顾,对此放置在运维专栏 出现如下问题,很懵,以为是节点挂了还是网址蹦了 一直刷新,登录之后就出现这个问题 2. 问题所示 对于SSO,也就是单点登…

ExcelToWord-Excel套打Word-Word邮件合并工具分享

Excel to Word转换工具分享 在日常工作或学习中,我们常常需要将Excel中的数据导出到Word文档中,以便更好地展示信息。市场上有许多Excel to Word的转换工具,它们各有特色。今天,我们就来推荐几款这样的工具,并探讨一下…

基于Springboot+Vue的教师科研管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

用Python实现运筹学——Day 12: 线性规划在物流优化中的应用

一、学习内容 线性规划在物流优化中可以用于解决诸如配送路径优化、货物运输调度等问题。配送中心的路径优化问题本质上是寻找一条最优路径,在满足需求点的需求条件下,最小化配送的总运输成本或时间。常见的物流优化问题包括: 配送中心的货…

Python小示例——质地不均匀的硬币概率统计

在概率论和统计学中,随机事件的行为可以通过大量实验来研究。在日常生活中,我们经常用硬币进行抽样,比如抛硬币来决定某个结果。然而,当我们处理的是“质地不均匀”的硬币时,事情就变得复杂了。质地不均匀的硬币意味着…

【C++】—— 类和对象(中)

【C】—— 类和对象(中) 文章目录 【C】—— 类和对象(中)前言1. 类的默认成员函数2. 构造函数3. 析构函数4. 拷贝构造函数5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载 结语 前言 小伙伴们大家好呀,昨天的 【C】——类和对象(上) 大家理解的怎么样了 今天…

网约班车升级手机端退票

背景 作为老古董程序员,不,应该叫互联网人员,因为我现在做的所有的事情,都是处于爱好,更多的时间是在和各行各业的朋友聊市场,聊需求,聊怎么通过IT互联网 改变实体行业的现状,准确的…

卡码网KamaCoder 53. 寻宝

题目来源:53. 寻宝(第七期模拟笔试) C题解(来源代码随想录):最小生成树 prim prim三部曲 第一步,选距离生成树最近节点第二步,最近节点加入生成树第三步,更新非生成树节…

随时随地,轻松翻译:英汉互译软件的便捷之旅

翻译英汉互译工具,就如同一位随时待命的语言助手,在这纷繁复杂的语言世界中为我们搭建起理解与沟通的桥梁。接下来,让我们一同深入了解这些神奇的英汉互译工具,探索它的诸多功能和独特魅力。 1.福晰在线翻译 链接直达>>h…

Python案例--三数排序

一、引言 在信息爆炸的时代,我们每天都会接触到大量的数据。无论是工作中的报表、学习中的数据集,还是日常生活中的购物清单,数据的有序性对于提高效率和决策质量都至关重要。排序算法作为数据处理的基础工具,其重要性不言而喻。…

RTSP协议讲解

1.RTSP协议 rtsp,英文全称 Real Time Streaming Protocol,RFC2326,实时流传输协议,是 TCP/IP 协议体系中的一个应用层协议。 RTSP 交互流程 1)OPTIONS C--->S 客户端向服务器端发现 OPTIONS,请求可用…

netty之SpringBoot+Netty+Elasticsearch收集日志信息数据存储

前言 将大量的业务以及用户行为数据存储起来用于分析处理,但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用,往往数据库都采用分库分表设计,那么将这些分散的数据通过binlog汇总到一个…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

SQL专项练习第二天

在数据处理和分析中,Hive 是一个强大的工具。本文将通过五个 Hive 相关的问题展示其在不同场景下的应用技巧。 先在home文件夹下建一个hivedata文件夹,把我们所需的数据写成txt文件导入到/home/hivedata/文件夹下面。 一、找出连续活跃 3 天及以上的用户…

茄子病虫害数据集。四类:果肉腐烂、蛀虫、健康、黄斑病。4000张图片,已经按照8:2的比例划分好训练集、验证集 txt格式 含类别yaml文件 已经标注好

茄子病虫害数据集。可用于筛选茄子品质、质量,训练采摘机器人视觉算法模型……数据集大部分图片来源于真实果园拍摄的图片(生长在果树之上的),图片分辨率高,数据集分为四类:果肉腐烂、蛀虫、健康、黄斑病。…

Pandas数据分析基础

目录标题 Pandas读取和写入数据数据读取读取csv读取excel数据输出 Pandas基础操作索引数据信息统计计算位置计算数据选择 Pandas高级操作复杂查询类型转换数据排序添加修改高级过滤数据迭代高阶函数 Pandas读取和写入数据 Pandas将数据加载到DataFrame后,就可以使用…