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

Pyenv 使用教程:安装与卸载

Pyenv 完整使用教程:安装、使用与卸载

什么是 Pyenv?

Pyenv 是一个简单的 Python 版本管理工具,可以让你在同一台机器上安装和切换多个 Python 版本。这对于开发不同项目时需要使用不同 Python 版本的情况非常有用。

安装 Pyenv

自动安装(推荐)

使用官方安装脚本:

curl https://pyenv.run | bash

或者:

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

手动安装

  1. 克隆 pyenv 仓库到本地:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
  1. 配置环境变量,将以下内容添加到你的 shell 配置文件中(如 ~/.bashrc, ~/.zshrc 等):
# Pyenv 配置
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"  # 如果你要使用虚拟环境
  1. 重新加载配置文件:
source ~/.bashrc
# 或者
source ~/.zshrc

系统依赖

在安装 Python 之前,需要安装必要的编译依赖:

Ubuntu/Debian:

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 python3-openssl git

CentOS/RHEL:

sudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel \
sqlite sqlite-devel openssl-devel tk-devel libffi-devel

macOS:

brew install openssl readline sqlite3 xz zlib

使用 Pyenv

查看可安装的 Python 版本

pyenv install --list

安装 Python

安装指定版本的 Python:

# 安装特定版本
pyenv install 3.9.7# 安装最新版本
pyenv install 3.10:latest# 安装开发版本
pyenv install 3.11-dev

查看已安装的版本

pyenv versions

* 的表示当前激活的版本。

设置 Python 版本

# 全局设置(整个系统使用该版本)
pyenv global 3.9.7# 局部设置(当前目录使用该版本)
pyenv local 3.8.12# 设置 shell 会话级别(仅当前终端会话)
pyenv shell 3.7.11

查看当前使用的 Python 版本

pyenv version

卸载 Python 版本

pyenv uninstall 3.8.12

使用 Pyenv-virtualenv(虚拟环境)

Pyenv-virtualenv 是 pyenv 的插件,用于管理虚拟环境。

安装虚拟环境插件

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

创建虚拟环境

# 基于当前 Python 版本创建虚拟环境
pyenv virtualenv myenv# 基于特定 Python 版本创建虚拟环境
pyenv virtualenv 3.9.7 myproject-env

使用虚拟环境

# 激活虚拟环境
pyenv activate myproject-env# 退出虚拟环境
pyenv deactivate# 删除虚拟环境
pyenv virtualenv-delete myproject-env

自动激活虚拟环境

在项目目录中创建 .python-version 文件:

# 在项目目录中执行
pyenv local myproject-env

这样每次进入该目录时,虚拟环境会自动激活。

实际工作流程示例

项目开发示例

# 1. 为项目创建专用 Python 版本和虚拟环境
pyenv install 3.9.7
pyenv virtualenv 3.9.7 my-web-project# 2. 进入项目目录
cd ~/projects/my-web-project# 3. 设置本地 Python 版本
pyenv local my-web-project# 4. 安装项目依赖
pip install -r requirements.txt# 5. 开始开发...

多版本管理示例

# 查看所有可用版本
pyenv versions# 在不同项目中使用不同版本
cd ~/project-a
pyenv local 3.8.12cd ~/project-b  
pyenv local 3.9.7cd ~/project-c
pyenv local 3.10.2

常用命令总结

命令描述
pyenv install --list查看可安装的 Python 版本
pyenv install <version>安装指定版本的 Python
pyenv versions查看已安装的版本
pyenv version查看当前使用的版本
pyenv global <version>设置全局 Python 版本
pyenv local <version>设置本地 Python 版本
pyenv shell <version>设置 shell 会话 Python 版本
pyenv uninstall <version>卸载 Python 版本
pyenv virtualenv <version> <env-name>创建虚拟环境
pyenv activate <env-name>激活虚拟环境
pyenv deactivate退出虚拟环境

卸载 Pyenv

如果你决定不再使用 pyenv,可以按以下步骤卸载:

  1. 从 shell 配置文件中移除 pyenv 相关配置
  2. 删除 pyenv 目录:
rm -rf ~/.pyenv
  1. 重新加载 shell 配置:
source ~/.bashrc
# 或者
source ~/.zshrc

故障排除

常见问题

  1. 命令未找到:确保已正确配置环境变量
  2. 安装失败:检查系统依赖是否已安装
  3. 虚拟环境无法激活:确认 pyenv-virtualenv 插件已安装

获取帮助

pyenv --help
pyenv install --help

结语

Pyenv 是一个强大的 Python 版本管理工具,通过本教程你应该已经掌握了它的基本用法。合理使用 pyenv 可以大大提高 Python 开发的效率,特别是在需要维护多个项目且这些项目使用不同 Python 版本的情况下。


Pyenv激活虚拟环境后能做什么?详细解析

当你执行pyenv activate后,实际上是激活了一个隔离的Python虚拟环境。让我用一个生动的例子来解释这背后的概念和实际用途。

虚拟环境的概念比喻

想象一下:

  • 系统Python = 公共厨房(所有人都用,容易混乱)
  • 虚拟环境 = 私人厨房(独立空间,专属工具和食材)

激活虚拟环境就像进入你的私人厨房,在这里你可以:

  • 安装特定版本的软件包而不影响其他项目
  • 使用特定的Python版本
  • 保持项目依赖的干净和独立

激活后的具体操作

1. 创建并激活虚拟环境

# 创建基于Python 3.9.7的虚拟环境
pyenv virtualenv 3.9.7 my-project-env# 激活虚拟环境
pyenv activate my-project-env

激活后,你的命令行提示符通常会变化,显示当前环境名称:

(my-project-env) user@computer:~$

2. 激活后能做的具体事情

🔧 安装项目专用依赖
# 这些包只会安装在当前虚拟环境中
pip install django==4.2
pip install requests beautifulsoup4
pip install -r requirements.txt
📦 管理项目依赖
# 查看当前环境已安装的包
pip list# 生成requirements文件
pip freeze > requirements.txt# 安装开发依赖
pip install pytest flake8 black
🐍 运行Python程序
# 使用虚拟环境中的Python解释器
python my_script.py# 启动Django开发服务器
python manage.py runserver# 运行测试
pytest
🔍 环境隔离验证
# 检查Python路径
which python
# 输出: /home/user/.pyenv/versions/my-project-env/bin/python# 检查Python版本
python --version
# 输出: Python 3.9.7# 查看已安装包(只显示当前环境的)
pip list

实际工作场景示例

场景1:Web开发项目

# 激活web项目环境
pyenv activate web-project-env# 安装web框架和数据库驱动
pip install flask==2.3.3
pip install sqlalchemy psycopg2-binary# 安装开发工具
pip install pytest coverage# 开始开发...
python app.py

场景2:数据科学项目

# 激活数据科学环境
pyenv activate datascience-env# 安装数据科学库(版本可能与其他项目不同)
pip install pandas==1.5.3
pip install numpy matplotlib seaborn
pip install jupyter notebook# 启动Jupyter
jupyter notebook

场景3:不同版本的同一项目

# 项目A需要Django 3.2
pyenv activate project-a
pip install django==3.2.19# 项目B需要Django 4.2  
pyenv activate project-b
pip install django==4.2.4

激活后的重要特性

环境隔离性

# 在环境A中
pyenv activate env-a
pip install package-x==1.0# 切换到环境B
pyenv activate env-b
pip list  # 这里看不到package-x# 回到环境A
pyenv activate env-a
pip list  # 能看到package-x

依赖版本控制

# 环境1:使用旧版本库
pyenv activate legacy-project
pip install django==2.2.28# 环境2:使用新版本库  
pyenv activate new-project
pip install django==4.2.4

退出虚拟环境

当你完成工作后:

# 退出当前虚拟环境
pyenv deactivate# 提示符变回正常
user@computer:~$

自动激活功能

你还可以设置进入目录时自动激活:

cd /path/to/my-project
pyenv local my-project-env# 以后每次进入这个目录都会自动激活虚拟环境
cd /path/to/my-project
# 自动激活: (my-project-env) user@computer:~/my-project$

实际工作流程

完整的项目设置流程

# 1. 进入项目目录
cd ~/projects/my-awesome-project# 2. 创建专用虚拟环境
pyenv virtualenv 3.11.4 awesome-project-env# 3. 设置为本地环境(自动激活)
pyenv local awesome-project-env# 4. 安装项目依赖
pip install -r requirements.txt# 5. 开发过程中安装新包
pip install new-dependency# 6. 更新依赖文件
pip freeze > requirements.txt# 7. 退出项目目录时自动停用环境
cd ..
# 环境自动停用

为什么需要虚拟环境?

  1. 避免版本冲突:不同项目可能需要同一库的不同版本
  2. 保持系统干净:不在系统Python中安装各种包
  3. 项目可重现性:每个项目有明确的环境配置
  4. 团队协作:确保所有开发者使用相同的环境
  5. 部署一致性:开发、测试、生产环境保持一致

总结

pyenv activate后,你获得了一个:

  • 独立的Python环境
  • 专属的包安装空间
  • 版本隔离的工作区
  • 可重现的开发环境

这就像为每个项目准备了专属的工作台,工具和材料都井井有条,不会相互干扰。这是现代Python开发的最佳实践,强烈推荐在所有项目中使用!

http://www.dtcms.com/a/445852.html

相关文章:

  • 告别PECL,拥抱PIE:像Composer一样管理PHP扩展
  • weex做网站python做网页
  • 【超详细】使用conda配置python的开发环境
  • 深圳沙井公司网站建设网上银行登录
  • 高端公司网站建设自适应网站cms
  • isis整体知识梳理
  • 水管 / 污水管道巡检机器人(研究思路_1)
  • 操作系统命令:Linux与Shell(Operating System Command Line, OS/CLI)目录导航、文件操作与日志查看命令实践
  • 北海建设工程信息网站自助提卡网站怎么做
  • 【QT】概述补充——对象树
  • 一套完整的前端“白屏”问题分析与解决方案(性能优化)
  • fd 工具指南:find 的现代替代品
  • 珠海做网站最好的公司有哪些做恐怖网站
  • 国庆训练题题解10.5
  • CLion实现ini 解析器设计与实现
  • python全栈(基础篇)——day04:后端内容(字符编码+list与tuple+条件判断+实战演示+每日一题)
  • 广州网站建设功能洛阳霞光企业网站建设公司
  • list 与 forward_list:一场 STL 中的“链表哲学”之争
  • Vue 学习与实践大纲(后端视角)
  • 2025时序数据库选型,从架构基因到AI赋能来解析
  • 三合一网站平台做网站 如何注册公司
  • 中山今科网站建设德州百度推广公司
  • Rust 与 传统语言:现代系统编程的深度对比
  • STM32--智能小车
  • Rust 登堂 之 Cell 和 RefCell(十二)
  • 分布式追踪系统实战:OpenTelemetry集成Istio实现全链路故障定位
  • 不同光谱的工业相机有哪些?能做什么?
  • 计算机网络——数据链路层笔记整理
  • CSS高效开发三大方向
  • 网站开发中的开版什么意思宁波汽车网站建设