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

python版本管理和依赖管理的最佳实践,pyenv + uv

一、最佳实践

1、创建项目目录
mkdir -p ~/Desktop/code/python/test
cd ~/Desktop/code/python/test
2、进入项目目录后,指定该项目使用的python版本
pyenv local 版本号

执行该命令后,会在项目目录下生成.python-version 文件,其中记录了指定的Python版本(例如 3.12)

3、在项目目录下,使用uv创建独立环境,以达到各项目依赖独立、避免多项目依赖冲突的目的
uv venv

执行该命令后,项目目录下会生成.venv目录,类似PHP语言中的vendor目录

注:安装uv
pip install uv# 验证安装成功
uv --version
# 成功会显示类似:uv 0.8.16 (2de677b0d 2025-09-09)
4、激活独立虚拟环境
source .venv/bin/activate

执行该命令后,命令行工具前会有一个 (.venv) 标识

如果想要退出虚拟环境命令:
deactivate
注意事项

每次开启新窗口后,都要重新执行一下命令 source .venv/bin/activate激活虚拟环境,否则会使用全局的python版本和依赖,如果不想每次打开新窗口后都执行该命令,可以使用 direnv 工具

# 安装 direnv
brew install direnv # macOS
sudo apt install direnv # Linux

在项目目录下创建 .envrc 文件,写入 source .venv/bin/activate;

vi .envrcsource .venv/bin/activate

执行 direnv allow 授权,之后进入项目目录会自动激活虚拟环境,离开目录会自动退出。

5、验证环境是否正确激活
# 查看当前Python路径(应指向.venv内)
which python
# 查看已安装依赖(应显示在.venv内)
uv pip list
6、安装项目依赖
uv pip install requests

依赖会被安装在 项目目录/.venv/lib/python3.12(之前指定的python版本)/site-packages/requests/

7、导出依赖清单到 requirements.txt,方便后续迁移或团队协作
uv pip freeze > requirements.txt

二、想要更改项目使用的python版本如何做

1、进入项目目录,删除旧的虚拟环境
cd 项目目录
rm -rf .venv  # 删除旧的虚拟环境
2、指定python版本
pyenv local 版本号
3、重新创建虚拟环境
uv venv
4、激活虚拟环境
source .venv/bin/activate 
5、验证环境是否正确激活
# 查看当前Python路径(应指向.venv内)
which python
# 查看已安装依赖(应显示在.venv内)
uv pip list
6、重新安装依赖
uv pip install -r requirements.txt # 如果之前导出过requirements.txt
或
uv pip install requests

原文链接:python版本管理和依赖管理的最佳实践,pyenv + uv


文章转载自:

http://iPEVubaJ.sbjhm.cn
http://9B01DsIH.sbjhm.cn
http://9UUsx8sK.sbjhm.cn
http://kK7MeT80.sbjhm.cn
http://nj9IY0eB.sbjhm.cn
http://cB8VXrxp.sbjhm.cn
http://gnfBieIt.sbjhm.cn
http://ZNN04Rk5.sbjhm.cn
http://YSXdfft7.sbjhm.cn
http://vebQzb6P.sbjhm.cn
http://Xoa1rPl4.sbjhm.cn
http://zeIuLSa6.sbjhm.cn
http://ulDJimkg.sbjhm.cn
http://baZNGt2F.sbjhm.cn
http://9T5AE9PM.sbjhm.cn
http://dge0FChA.sbjhm.cn
http://4ykJUnzb.sbjhm.cn
http://AZHTLx27.sbjhm.cn
http://5otqPTvz.sbjhm.cn
http://ZgEs3XBH.sbjhm.cn
http://IaiMe3Jq.sbjhm.cn
http://vvqgHWAi.sbjhm.cn
http://optRf6Bg.sbjhm.cn
http://XpolC12w.sbjhm.cn
http://yodbQ7Mz.sbjhm.cn
http://nyOPq25x.sbjhm.cn
http://muxGZhpZ.sbjhm.cn
http://MzOUSfm6.sbjhm.cn
http://xRHhlrUF.sbjhm.cn
http://d0Th5CiG.sbjhm.cn
http://www.dtcms.com/a/376793.html

相关文章:

  • iPhon 17 推出
  • MySQL的常用命令
  • KEDA/HPA/VPA 三件套:ABP 后台作业的事件驱动伸缩
  • 金融中的异常收益率
  • 模型部署:(三)安卓端部署Yolov8-v6.0目标检测项目全流程记录
  • 阅读|史蒂芬·普拉达《C Primer Plus(第6版)》:数据和C
  • 回归预测 | MATLAB基于GRU-Attention的多输入单输出回归预测
  • UniApp 分包异步化配置及组件引用解决方案
  • Postman环境变量全局变量设置
  • C语⾔内存函数
  • go资深之路笔记(一) Context
  • 数学建模资源合集
  • STM32项目分享:基于STM32智能吸尘器系统的设计与实现
  • 计算机毕设 java 高校会议室预约管理系统 基于 SSM 框架的高校会议室管理平台 Java+MySQL 的预约全流程管控系统
  • vue-pdf 实现blob数据的预览
  • RiskBird企业信息模糊查询工具
  • 常用PDF转换工具推荐
  • ES6 类与继承:现代 JavaScript 面向对象编程
  • 使用 Docker Buildx 制作并推送双架构镜像
  • PDF Reader 编辑阅读(Mac)
  • springboot响应式编程笔记
  • 论文阅读:ACL 2024 Stealthy Attack on Large Language Model based Recommendation
  • WebView电视v1.13.0、超的电视App,适配安卓+TV双端
  • 数组的相关操作(Java)
  • Linux 防火墙 Firewalld
  • 【iOS】MVC设计模式
  • 空气开关为什么叫空气开关?
  • win11 idea图标在任务栏中展示为空白
  • GaussDB 中 alter default privileges 的使用示例(下)
  • 自建注册中心