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

Python 虚拟环境完全指南:venv、virtualenv 与 Conda

Python 虚拟环境完全指南venv、virtualenv 与 Conda目录虚拟环境概述venv 模块详解virtualenv 工具详解Conda 环境管理详解三者对比分析总结与建议1. 虚拟环境概述1.1 什么是虚拟环境虚拟环境是一个独立的 Python 运行环境它允许你在同一台机器上为不同的项目安装不同的包和版本而不会相互干扰。每个虚拟环境都拥有自己的 Python 解释器副本、pip 包管理器以及独立的第三方库目录。1.2 为什么需要虚拟环境虚拟环境主要解决 Python 开发中的三个关键问题依赖隔离每个项目拥有独立的包安装空间安装某包的特定版本不会影响系统 Python 或其他项目。版本管理不同项目可以使用不同的 Python 版本。一个机器学习项目可能需要 Python 3.11 以获得更好性能而遗留代码库可能需要 Python 3.8 来兼容旧库。可复现性通过导出依赖列表团队成员可以在不同机器上精确复现同一套开发环境消除在我机器上可以运行的问题。如果不使用虚拟环境在全局安装不兼容的包可能导致系统工具不可用严重时甚至需要重装操作系统。2. venv 模块详解2.1 简介venv是 Python 标准库自带的虚拟环境管理模块从 Python 3.3 开始引入。它无需额外安装是 Python 官方推荐的默认虚拟环境管理方式。2.2 创建虚拟环境进入项目目录执行以下命令创建虚拟环境python-mvenv myenv该命令会创建一个myenv目录其中包含Python 解释器的副本、标准库、pip 包管理器以及用于激活环境的脚本。指定 Python 版本当系统存在多个 Python 安装时可以通过指定 Python 版本来创建环境# 使用 Python 3.11 创建虚拟环境python3.11-mvenv myenvvenv 会使用所调用 Python 解释器的版本来创建环境因此只需调用对应的python3.x命令即可切换版本。重要说明venv 创建的虚拟环境会固定到创建时所使用的 Python 版本。如需使用不同版本的 Python可以加载对应的 Python 模块后再创建或转而使用 Conda。常用创建选项选项说明--system-site-packages允许虚拟环境访问系统全局安装的包--clear如果环境目录已存在先清空再创建--upgrade使用最新的 Python 可执行文件升级环境2.3 激活虚拟环境激活方式因操作系统而异Linux / macOSsourcemyenv/bin/activateWindows Command Promptmyenv\Scripts\activate.batWindows PowerShell.\myenv\Scripts\Activate.ps1激活成功后终端提示符会显示环境名称表明当前已进入虚拟环境(myenv) usermachine:~/project$此后所有pip install命令安装的包都会指向该虚拟环境而非系统 Python。验证激活是否成功可以执行pip list查看依赖是全局还是当前环境或查看命令行前面是否有(myenv)标识。2.4 安装与管理包在激活的虚拟环境中像平常一样使用 pippipinstallrequests pandas numpy这些包只会安装在当前虚拟环境中可通过pip list验证pip list2.5 导出与重建依赖将当前环境中的所有包及版本导出到文件pip freezerequirements.txt在新环境中通过该文件重建完全相同的依赖pipinstall-rrequirements.txt2.6 退出虚拟环境deactivate提示符中的环境名会消失后续操作将回到系统 Python 环境。3. virtualenv 工具详解3.1 简介virtualenv是一个功能更强大的第三方虚拟环境管理工具出现时间早于 venv。虽然需要单独安装但它支持更旧的 Python 版本2.7并提供了更多的自定义选项和更快的环境创建速度。3.2 安装 virtualenvpipinstallvirtualenv安装完成后可以通过以下命令验证virtualenv--version3.3 创建虚拟环境基本创建命令virtualenv myenv这会创建一个与 virtualenv 自身相同 Python 版本的虚拟环境。指定 Python 版本virtualenv-ppython3.10 myenv或使用完整路径指定解释器virtualenv-p/usr/bin/python3.8 myenv其他有用选项选项说明--no-pip创建不包含 pip 的环境之后可单独安装--system-site-packages允许环境访问系统全局安装的包--no-vcs-ignore不在环境目录中创建 VCS 忽略文件如 .gitignore3.4 激活与退出激活方式与 venv 完全相同Linux / macOSsourcemyenv/bin/activateWindows.\myenv\Scripts\activate退出deactivate3.5 安装与管理包与 venv 相同激活环境后使用 pip 进行包管理pipinstallpackage_name pip freezerequirements.txt3.6 virtualenvwrapper 扩展virtualenvwrapper是一套基于 virtualenv 的扩展工具提供了更方便的命令行接口来管理虚拟环境。安装pipinstallvirtualenvwrapper配置在~/.bashrc或~/.zshrc中添加exportWORKON_HOME$HOME/.virtualenvssource/usr/local/bin/virtualenvwrapper.sh常用命令命令说明mkvirtualenv myenv创建虚拟环境workon myenv激活虚拟环境deactivate退出虚拟环境rmvirtualenv myenv删除虚拟环境lsvirtualenv列出所有虚拟环境4. Conda 环境管理详解4.1 简介Conda 是一个跨平台、跨语言的包管理和环境管理系统。与 venv 和 virtualenv 的显著不同在于Conda 不仅可以管理 Python 包还能管理 R 包、C/C 库等任何类型的软件包并且会自动处理包之间的复杂依赖关系。它通过安装预编译的二进制包来工作这使得它在数据科学、机器学习和科学计算领域尤为流行。4.2 安装 Conda可以从以下两种发行版中选择安装Anaconda包含 Conda、Python 以及超过 150 个常用科学计算包体积较大。Miniconda仅包含 Conda 和 Python体积小用户可按需安装其他包。推荐有一定经验的用户使用。安装后建议初始化 shell 并关闭自动激活 base 环境conda initbash# Linux/macOSconda config--setauto_activate_basefalse重启终端后生效。4.3 创建虚拟环境基本创建conda create--namemyenv这会创建一个名为myenv的空环境。指定 Python 版本最常见用法conda create--namemyenvpython3.10还可以指定版本范围conda create--namemyenvpython3.10创建时同时安装包conda create--namemyenvpython3.10numpy pandas matplotlib指定包的精确版本conda create--namemyenvpython3.10numpy1.24pandas2.0克隆现有环境conda create--namenewenv--cloneoldenv4.4 激活与退出激活环境适用于所有平台conda activate myenv激活后终端提示符会显示环境名称。退出环境conda deactivate4.5 安装与管理包激活环境后可以使用 conda 或 pip 安装包# 使用 conda 安装condainstallnumpy pandas# 从特定 channel 安装如 conda-forgecondainstall-cconda-forge scipy# 使用 pip 安装 conda 仓库中不存在的包pipinstallsome-package4.6 环境列表与查看# 列出所有环境condaenvlist# 查看当前环境信息conda info--envs# 搜索可用的包版本conda search pandas4.7 导出与重建环境导出环境到 YAML 文件condaenvexport--from-historyenvironment.yml这会生成一个包含环境所有信息的 YAML 文件。示例 environment.yml 文件name:myprojectchannels:-conda-forge-defaultsdependencies:-python3.11-numpy1.24-pandas2.0-scikit-learn1.3-matplotlib3.7-jupyter-pip-pip:-pygwalker从 YAML 文件重建环境condaenvcreate-fenvironment.yml4.8 删除环境condaenvremove--namemyenv或使用--all删除环境及所有关联包conda remove-nmyenv--all4.9 管理 ChannelsConda 通过 channels 来获取包常用的 channel 是conda-forge社区维护的庞大软件仓库。配置 channel 优先级可以获得更稳定可靠的依赖解析# 添加 conda-forge channelconda config--addchannels conda-forge# 设置严格 channel 优先级conda config--setchannel_priority strict5. 三者对比分析5.1 核心特性对比表维度venvvirtualenvConda来源Python 标准库内置第三方工具需安装第三方工具需安装适用语言仅 Python仅 PythonPython、R、C/C 等多语言包管理器pippipconda pip包类型Python 包源码/whlPython 包源码/whl预编译二进制包任何语言Python 版本支持Python 3.3Python 2.7 / 3.x不限制依赖解析pip 解析较弱pip 解析较弱conda 解析较强自动处理复杂依赖创建速度标准较快优化过较慢需下载二进制包跨平台是是是环境位置项目目录内项目目录内用户目录或自定义位置5.2 功能维度详细对比包管理范围venv 和 virtualenv主要关注 Python 包的隔离使用 pip 管理依赖对于非 Python 依赖如系统级的 C 库管理能力较弱。Conda可以管理任何类型的包包括 Python 包、R 包、C/C 库、系统级工具等并会自动处理跨语言的包依赖关系。Conda 还可以直接安装 Python 和 pip 这些基础工具减少了环境初始配置时间。性能与环境创建virtualenv通过符号链接和优化策略创建速度比 venv 更快。venv作为内置模块无额外依赖启动和使用最为轻量。Conda创建环境时需下载二进制包速度相对较慢但环境一旦建立后管理高效。Python 版本兼容性venv仅支持 Python 3.3 及以上版本不支持 Python 2。virtualenv对 Python 2 和 Python 3 都有良好支持适合需要维护遗留项目的场景。Conda不依赖系统 Python 版本可以在环境中安装任意版本 Python完全独立于系统安装。5.3 适用场景分析场景推荐工具简单的 Python 3 项目venv内置零配置同时涉及 Python 2 和 Python 3virtualenv数据科学与机器学习项目Conda科学计算包集成度高需要管理非 Python 二进制依赖Conda追求最小化安装和轻量化venv多语言混合项目Python R 等Conda快速原型开发venv或virtualenv生产环境部署需精确复现CondaYAML 环境文件或venvrequirements.txt6. 总结与建议6.1 工具选择指南入门或简单项目优先使用 Python 内置的venv。它零依赖、无需额外安装完全满足大多数 Python 项目的需求。需要兼容旧版本 Python选择virtualenv。它是目前对 Python 2.7 支持最好的虚拟环境工具同时提供了更多的自定义选项和扩展工具如 virtualenvwrapper。数据科学、机器学习或科学计算领域选择Conda。Conda 对 NumPy、SciPy、scikit-learn 等科学计算包的二进制管理极其高效可以避免编译 C 扩展带来的各种麻烦。此外Conda 通过 YAML 环境文件提供了强大的环境复现能力非常适合团队协作和生产部署。需要管理非 Python 依赖无条件选择Conda。venv 和 virtualenv 的能力边界止于 Python 生态而 Conda 可以管理任何类型的依赖。6.2 最佳实践始终使用虚拟环境为每个项目创建独立的虚拟环境避免依赖冲突。使用 requirements.txt 或 environment.yml将依赖列表纳入版本控制Git确保团队环境一致。忽略环境目录将venv/、.venv/或env/目录添加到.gitignore文件中避免将虚拟环境提交到版本库。合理选择环境位置Python 虚拟环境创建后不可移动需提前规划好安装位置。定期更新依赖在虚拟环境中定期使用pip或conda更新包以获取安全修复和新功能。在激活状态下操作安装包或运行脚本前务必确认虚拟环境已激活避免将包意外安装到全局环境。6.3 快速参考三工具核心命令操作venvvirtualenvConda创建环境python -m venv myenvvirtualenv myenvconda create -n myenv python3.10激活环境source myenv/bin/activateLinux同 venvconda activate myenv退出环境deactivatedeactivateconda deactivate安装包pip install pkgpip install pkgconda install pkg导出依赖pip freeze requirements.txt同 venvconda env export environment.yml删除环境删除目录即可删除目录即可conda env remove -n myenv列出环境无内置命令lsvirtualenv需 wrapperconda env list

相关文章:

Python 虚拟环境完全指南:venv、virtualenv 与 Conda

Python 虚拟环境完全指南:venv、virtualenv 与 Conda 目录 虚拟环境概述venv 模块详解virtualenv 工具详解Conda 环境管理详解三者对比分析总结与建议 1. 虚拟环境概述 1.1 什么是虚拟环境 虚拟环境是一个独立的 Python 运行环境,它允许你在同一台机…...

抖音下载器技术架构解析:多策略异步下载系统的设计与实现

抖音下载器技术架构解析:多策略异步下载系统的设计与实现 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

Unity-Editor-Toolbox 上下文菜单操作:复制粘贴组件的简单方法

Unity-Editor-Toolbox 上下文菜单操作:复制粘贴组件的简单方法 【免费下载链接】Unity-Editor-Toolbox Tools, custom attributes, drawers, hierarchy overlay, and other extensions for the Unity Editor. 项目地址: https://gitcode.com/gh_mirrors/un/Unity-…...

为什么电路中的阻抗需要引入复数?

1、方便计算说法▼无他,就是图个方便计算而已。请看下题,求如图所示电路中电流的大小。电流的频率与电压频率相同,无非就是求解幅值的变化和相位的变化。▼引用一下以前我的一个知乎回答,数学中的数先是从一维数轴开始。▼因电路的…...

【Oracle数据库指南】第03篇:Oracle SQL分组统计与排序——GROUP BY、HAVING与ORDER BY深度解析

上一篇【第02篇】Oracle SQL查询高级技巧——条件与函数 下一篇【第04篇】Oracle多表查询与连接操作——JOIN的全面解析 摘要 本文详细讲解Oracle SQL中的分组统计功能,包括分组函数(COUNT、SUM、AVG、MAX、MIN等)的用法、GROUP BY子句的多列…...

CANN/asc-devkit半精度转无符号整数函数

__half2uint_rd 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

AI辅助生殖:多模态数据融合与深度学习在胚胎评估中的应用

1. 项目概述:当AI遇见生命的起点在辅助生殖技术(ART)这个关乎无数家庭希望的前沿领域,每一次胚胎移植都像是一场精密的“押注”。医生和胚胎学家们需要在显微镜下,从数个甚至数十个胚胎中,挑选出那个最有潜…...

CANN算子库幂运算API文档

aclnnPowTensorScalar&aclnnInplacePowTensorScalar 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 📄 查看源码 产品支持情况 产品是否支持A…...

CANN/ops-math OneHot算子

OneHot 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√…...

CANN ops-nn MseLoss算子

MseLoss 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√At…...

ReportPortal故障排除:常见部署问题和解决方案大全

ReportPortal故障排除:常见部署问题和解决方案大全 【免费下载链接】reportportal Main Repository. ReportPortal starts here - see readme below. 项目地址: https://gitcode.com/gh_mirrors/re/reportportal ReportPortal是一款功能强大的测试自动化报告…...

如何永久保存微信聊天记录?5步实现数据自主管理

如何永久保存微信聊天记录?5步实现数据自主管理 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …...

如何用PyWxDump破解微信数据解析的三大技术壁垒:从困境到突破的完整指南

如何用PyWxDump破解微信数据解析的三大技术壁垒:从困境到突破的完整指南 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 微信数据解析一直是个技术难题,就像试图打开一个不断变换密码的智能保险箱。…...

FPGA加速中性原子量子计算机的原子检测技术

1. 中性原子量子计算机的原子检测挑战量子计算领域近年来最激动人心的进展之一,就是中性原子量子计算机的快速发展。这种量子计算机利用激光镊子(光学镊子)阵列来捕获和排列中性原子(如铷、铯等碱金属原子)&#xff0c…...

Arclight故障排除与性能调优:解决常见问题的终极方案

Arclight故障排除与性能调优:解决常见问题的终极方案 【免费下载链接】Arclight A Bukkit(1.20/1.21) server implementation in modding environment using Mixin. ⚡ 项目地址: https://gitcode.com/gh_mirrors/ar/Arclight Arclight作为基于Mixin技术的Bu…...

Swift集成OllamaKit:本地大模型原生应用开发实战指南

1. 项目概述:当大模型遇上原生应用最近在折腾一个很有意思的东西,想给手头的 macOS 应用加上一点“智能”。不是那种简单的网络请求,而是希望它能像 ChatGPT 那样,在本地就能理解我的指令、生成文本,甚至进行简单的推理…...

法律即代码:开源项目vericlaw如何用规则引擎实现合同自动化

1. 项目概述与核心价值最近在折腾一些自动化流程,特别是涉及到合同、协议这类法律文书的生成与审核时,发现了一个挺有意思的开源项目:Sheygoodbai/vericlaw。乍一看这个名字,结合其仓库描述,就能猜到它大概和法律&…...

安全代码沙盒实践:从Docker到seccomp的多层防御架构

1. 项目概述:安全代码执行的沙盒化实践在开发、测试乃至在线教育、代码评测平台等场景中,我们经常面临一个核心挑战:如何安全地执行一段来源未知、意图不明的代码?直接在生产服务器上运行用户提交的代码,无异于敞开大门…...

mitojs高级配置与Hook机制:如何实现高度定制化监控

mitojs高级配置与Hook机制:如何实现高度定制化监控 【免费下载链接】monitor 👀 一款轻量级的收集页面的用户点击行为、路由跳转、接口报错、代码报错、页面性能并上报服务端的SDK 项目地址: https://gitcode.com/gh_mirrors/mo/monitor 在当今We…...

Dify工作流智能生成器:用自然语言快速构建AI应用

1. 项目概述:一个为Dify AI工作流“编程”的智能生成器如果你正在使用Dify构建AI应用,并且对反复拖拽节点、配置连线、调试参数感到一丝疲惫,那么Tomatio13/DifyWorkFlowGenerator这个项目可能会让你眼前一亮。它本质上是一个“用自然语言描述…...

CANN/GE图引擎Profiling初始化接口

aclgrphProfInit 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlo…...

Arm CoreSight调试架构与SW-DP协议详解

1. Arm CoreSight调试架构概述在嵌入式系统开发中,调试访问端口(Debug Access Port, DAP)是连接芯片内部调试资源与外部调试器的关键桥梁。作为Arm CoreSight调试技术栈的核心组件,DAP采用分层设计理念,将调试功能划分为两个逻辑层次&#xf…...

CANN/asc-devkit Query API文档

Query 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann…...

CANN/ge ACL内存加载模型API

aclmdlLoadFromMemWithQ 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…...

CANN/GE获取模型输出名称

aclmdlGetOutputNameByIndex 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch…...

ARM9EJ-S处理器JTAG调试架构与实战技巧

1. ARM9EJ-S调试架构概述ARM9EJ-S处理器作为经典的嵌入式RISC核心,其调试子系统设计体现了ARM架构对硬件级诊断能力的重视。整个调试体系由三个关键部分组成:JTAG物理接口、TAP控制器状态机以及EmbeddedICE-RT逻辑单元。这种分层设计使得开发者能够通过标…...

基于Gradio与多模型代理的AI模拟面试系统实战部署指南

1. 项目概述与核心价值最近在准备技术面试,刷题刷到头晕,对着白板自言自语总觉得差点意思。市面上那些模拟面试工具,要么是纯文本问答,冷冰冰的;要么流程僵化,和真实面试里那种有来有回的对话感相去甚远。直…...

CANN/ops-nn动态量化RMS归一化融合算子

aclnnAddRmsNormDynamicQuantV2 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√A…...

开源材料计算自动化平台OpenClaw:从高通量筛选到机器学习集成

1. 项目概述:一个材料科学领域的开源协作实验室最近在GitHub上看到一个挺有意思的项目,叫openclaw-materials-lab。光看这个名字,就能嗅到一股浓浓的交叉学科味道——“openclaw”听起来像是个工具或框架名,“materials lab”则直…...

PhySO快速入门指南:5分钟学会使用符号回归发现物理规律

PhySO快速入门指南:5分钟学会使用符号回归发现物理规律 【免费下载链接】PhySO Physical Symbolic Optimization 项目地址: https://gitcode.com/gh_mirrors/ph/PhySO PhySO(Physical Symbolic Optimization)是一款强大的符号回归工具…...