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

macOS-python项目虚拟环境管理

众所周知,python版本比较多,为了避免的不同版本项目开发存在冲突,在虚拟环境中进行项目开发,可以避免因为python版本不同带来的冲突,本文主要对python项目开发几种虚拟环境进行整理汇总。

一、venv 创建虚拟环境

命令格式:

python3 -m venv /path/to/new/virtual/environment

其中,/path/to/new/virtual/environment是虚拟环境的完整路径,最后的environment是环境名称。

说明:

  • venv是 Python 自带的虚拟环境创建工具,无需安装,直接可以用
  • 使用上述命令创建的虚拟环境,其 Python 解释器版本与当前系统中生效的 Python 版本一致。例如,当前终端执行 python --version 显示的 Python 版本为 3.13.13,则虚拟环境中的python解释器版本也是 3.13.13。
  • 创建虚拟环境后,在 IDE(如 PyCharm、VSCode)中创建新项目时,可以通过“自定义”或“选择已有解释器”的方式,指定使用该虚拟环境中的 Python 解释器。

二、conda 创建虚拟环境

Conda 是一个开源的包管理和环境管理系统,支持 Python、Java等多种语言。它不仅可以管理 Python 包,还可以管理非 Python 的依赖项,是数据科学和机器学习领域的常用工具。本文不对conda工具的安装进说明。

1. Conda 环境管理命令

1.1 创建虚拟环境

创建指定 Python 版本的环境:

conda create --name myenv python=3.9

创建环境并指定包:

conda create --name myenv python=3.9 numpy pandas matplotlib

1.2 激活与停用环境

激活环境:

conda activate myenv

停用环境:

conda deactivate

1.3 查看环境列表

#第一种方式 conda env list #第二种方式 conda info --envs

列表中带 * 标识的是当前生效的环境

1.4 管理环境中的包

安装包:

conda install numpy pandas #指定版本 conda install numpy=1.24.3 #更新包 conda update numpy

更新包:

conda update numpy

更新所有包:

conda update --all

卸载包:

conda remove numpy

1.5 导出与复制环境

导出环境配置:

conda env export > environment.yml

复制环境:

conda create --name newenv --clone oldenv

1.6 删除环境

conda env remove --name myenv

2. Conda 与 venv 的主要区别

2.1 包管理能力

  • Conda:不仅管理 Python 包,还能管理非 Python 依赖(如 C/C++ 库、系统工具等)。通过 conda-forge 等渠道提供预编译的二进制包,解决依赖冲突能力更强。
  • venv:仅管理 Python 包,依赖 pip 进行包安装,无法处理非 Python 依赖。

2.2 跨语言支持

  • Conda:原生支持多语言环境管理,可以为 R、Java、C++ 等项目创建独立环境。
  • venv:仅针对 Python 环境,不支持其他语言。

2.3 Python 版本管理

  • Conda:可以在创建环境时指定任意可用的 Python 版本,不依赖系统已安装的 Python。
  • venv:创建的虚拟环境 Python 版本与当前系统激活的 Python 版本一致,无法创建不同 Python 版本的环境。

2.4 环境隔离程度

  • Conda:环境完全独立,包括 Python 解释器、标准库和所有依赖包。
  • venv:共享系统 Python 解释器和标准库,只隔离第三方包。

2.5 使用场景

  • Conda:适合数据科学、机器学习项目,需要复杂依赖(如 CUDA、MKL 等)或跨语言开发。
  • venv:适合纯 Python Web 开发、脚本编写等简单项目,轻量级且无需额外安装。

2.6 性能与存储

  • Conda:环境占用空间较大,因为包含完整的 Python 解释器和依赖。
  • venv:环境更轻量,创建速度快,占用空间小。

三、Virtualenv 管理虚拟环境

Virtualenv 是一个独立的 Python 虚拟环境创建工具,比 venv 更早出现,支持 Python 2 和 Python 3。它提供了比 venv 更灵活的配置选项,是许多老项目和跨版本项目的常用选择。

1. 工具安装

Virtualenv 需要通过 pip 安装:

pip install virtualenv

如果系统中有多个 Python 版本,可以使用特定版本的 pip 安装:

pip3 install virtualenv # 或 python3 -m pip install virtualenv

2. 创建虚拟环境

创建虚拟环境的基本命令格式如下:

virtualenv env_name

其中env_name是环境名称,会在当前目录下创建一个名为env_name的文件夹。

常用选项:

  • 指定 Python 解释器版本virtualenv -p /usr/bin/python3.8 env_name
  • 不安装 pipvirtualenv --no-pip env_name
  • 不安装 setuptoolsvirtualenv --no-setuptools env_name
  • 继承系统包virtualenv --system-site-packages env_name

3. 激活环境

激活 Virtualenv 环境需要执行环境目录下的激活脚本:

# 进入创建环境所在目录 cd env_name #执行激活脚本(Linux/macOS) source bin/activate #Windows 系统 env_name\Scripts\activate

激活成功后,命令行提示符前会显示环境名称(env_name)

4. 退出环境

退出当前虚拟环境非常简单:

deactivate

执行后即可返回到系统默认的 Python 环境。

5. Virtualenv 与 venv、conda 的对比

5.1 与 venv 的对比

  • 兼容性:Virtualenv 支持 Python 2 和 Python 3,而 venv 仅支持 Python 3.3+
  • 灵活性:Virtualenv 提供更多配置选项(如不安装 pip、继承系统包等)
  • 安装方式:Virtualenv 需要额外安装,venv 是 Python 标准库的一部分
  • 性能:两者在创建速度和资源占用上相差不大

5.2 与 conda 的对比

  • 包管理:Virtualenv 依赖 pip 管理 Python 包,conda 可以管理 Python 和非 Python 依赖
  • Python 版本管理:Virtualenv 需要系统已安装对应 Python 版本,conda 可以独立管理 Python 版本
  • 跨语言支持:Virtualenv 仅支持 Python,conda 支持多语言环境
  • 使用场景:Virtualenv 适合传统 Python 项目,conda 适合数据科学和机器学习项目

6. 使用建议

  • 对于 Python 3.3+ 的新项目,优先使用 venv(无需安装)
  • 如果需要支持 Python 2 或需要更灵活的配置,选择 Virtualenv
  • 对于数据科学、机器学习或需要复杂依赖的项目,推荐使用 conda
  • 团队协作时,建议统一虚拟环境工具,避免环境不一致问题

总结:Conda 功能更强大,适合复杂项目和跨语言开发;venv 更轻量简单,适合纯 Python 基础项目。选择哪种工具取决于项目需求和个人偏好。

ps:感谢阅读!✍️本文为原创实战总结,文中方案均经过本地测试验证。 码字不易,内容有帮助可以随手支持,金额随意,不打赏也完全不影响正常阅读,知识分享始终开放。

http://www.jsqmd.com/news/1397640/

相关文章:

  • C# WinForm程序退出机制与资源释放全解析
  • 把任务栏变透明,找回桌面氛围感:TranslucentTB 上手指南
  • Sox音频处理工具:从命令行到批量自动化处理实战指南
  • AndroidManifest.xml配置优化全指南
  • 告别 Lenovo Vantage:5 分钟上手 Lenovo Legion Toolkit,我的拯救者性能优化实录
  • Oracle数据库会话强制终止:原理、风险与实战操作指南
  • Qt QSpinBox深度自定义:QSS样式表实战指南与高级技巧
  • 大麦网自动抢票脚本实测笔记:亲测跑通全场,配置与避坑都在这
  • Windows字体又糊又虚?免费开源的字体渲染优化工具MacType让你一眼看清
  • 2026年南京能做智慧燃气安全监测管理系统的公司有哪些?
  • 2026视频处理小程序技术选型指南:链接解析+OCR+ASR+AI配音多引擎对比
  • Win10/11开机内存占用高?详解系统内存管理机制与优化误区
  • 免费XML编辑器XmlNotepad完整上手指南:从安装到验证与XSLT转换实测
  • 日立电梯CA系列规格表智能编辑工具(兼容CA09/CA13/CA19)
  • 英语学术汇报实战指南:从逻辑构建到现场表达
  • 突破60帧上限!艾尔登法环FPS解锁工具全攻略:让高刷屏真正跑起来
  • 网易云NCM格式转MP3:ncmdump三步搞定,拖一下音乐就自由了
  • WorkshopDL怎么用:没有Steam客户端也能免费下载创意工坊模组的图形化工具
  • Windows系统文件ttdplm.dll丢失找不到问题解决
  • 艾尔登法环帧率解锁神器:手把手用Elden Ring FPS Unlocker告别60帧封印
  • 把抖音视频批量搬进本地:我的douyin-downloader无水印下载实战笔记
  • 深夜还在手动清体力的你,早该认识“绝区零一条龙“了:从繁琐日常到全自动托管,每天省下两小时
  • Java核心基础深度解析:从面向对象到并发编程的稳定态知识体系
  • Claude HUD插件升级指南:从备份到调优的完整迁移实践
  • 湘美谈教育湘美书院:AI时代的人到中年
  • 4步跑通PotPlayer字幕翻译插件:免费实时字幕从安装到调优全攻略
  • 微信网页版打不开?免费开源插件三步搞定,无需安装微信客户端
  • OpenCode:一站式AI编程助手,聚合主流模型提升开发效率
  • 3分钟上手TegraRcmGUI:把Switch破解注入变成傻瓜式点击操作
  • Wand-Enhancer 完整使用指南:一个开源补丁,让我彻底告别了 2 小时限制