0

0

Python虚拟环境进阶教程_conda与venv高级使用

冷漠man

冷漠man

发布时间:2026-01-03 20:12:08

|

105人浏览过

|

来源于php中文网

原创

conda是跨语言包与环境管理系统,支持非Python包及底层依赖;venv是Python内置模块,仅管理Python解释器和纯Python包。

python虚拟环境进阶教程_conda与venv高级使用

小云雀
小云雀

剪映出品的AI视频和图片创作助手

下载

conda与venv的核心区别:不只是包管理器 vs 环境工具

conda 不是 Python 专属的虚拟环境工具,而是一个跨语言的包与环境管理系统;venv 是 Python 标准库内置模块,仅管理 Python 解释器及纯 Python 包。这意味着:
- conda 可以安装 numpy、ffmpeg、rust-toolchain 等非 Python 包,且自动解决底层依赖(如 MKL、CUDA);
- venv 只复制或链接 Python 解释器,依赖 pip 安装包,对二进制兼容性、系统级依赖无感知。
实际选型建议:
- 科学计算、AI、需要预编译库(如 PyTorch + CUDA) → 优先用 conda;
- Web 开发、轻量脚本、CI/CD 中强调标准性和最小依赖 → venv + pip 更透明可控;
- 混合场景(如 conda 管理基础环境 + pip 安装特定 wheel)完全可行,但需禁用 pip 的自动更新检查(pip config set global trusted-host pypi.org)避免冲突。

conda 高级技巧:环境复现、离线部署与通道优化

生产环境中常需精确复现环境。conda export 默认导出平台相关包(含 build 字符串),易导致跨平台失败:
- ✅ 推荐方式:conda env export --from-history > environment.yml —— 只记录你显式安装的包(不含依赖推导项);
- ✅ 离线部署:先 conda pack -n myenv -o myenv.tar.gz 打包(含所有 .so/.dll),目标机解压后 source activate ./myenv/bin/activate(Linux/macOS)或 call myenv\Scripts\activate.bat(Windows);
- ✅ 加速安装:配置国内镜像源(如清华)并设为默认通道:
  conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  conda config --set show_channel_urls yes
  再执行 conda config --remove-key channels 清除默认 channel 列表,避免搜索慢。

venv 进阶控制:隔离性强化、可复现性与 IDE 集成

venv 默认不隔离系统 site-packages,但可通过 --system-site-packages 显式开启(慎用)。真正干净的环境应:
- 创建时加 --clear 清空已有环境(覆盖重装);
- 使用 --without-pip 创建极简环境,后续用 get-pip.py 或 embeddable zip 手动安装指定版本 pip;
- 提升可复现性:不用 pip install requirements.txt,改用 pip-compile(来自 pip-tools)生成带哈希锁的 requirements.txt
  pip install pip-tools
  pip-compile --generate-hashes --allow-unsafe requirements.in
- VS Code / PyCharm 识别 venv:确保在项目根目录下创建 .venv 文件夹,IDE 会自动检测;若手动指定,路径必须指向含 python.exe(Windows)或 python(macOS/Linux)的 bin/ 子目录。

混合工作流实战:conda 做基础环境,venv 做项目沙盒

大型团队常用“conda base + venv per project”模式,兼顾稳定性与灵活性:
- 用 conda 创建统一 Python 版本基础环境(如 py39-base),安装公司内部 SDK、监控 agent 等共用组件;
- 各项目目录内运行 python -m venv .venv --system-site-packages,复用 base 环境的解释器和部分包;
- 在 .venv 中仅 pip install 当前项目依赖,避免 conda update 导致的意外升级;
- Git 忽略 .venv,但保留 pyvenv.cfg 文件(记录 base-python 路径),便于新成员一键重建:
  python -c "import sys; print(sys.base_prefix)" > pyvenv.cfg
  >后续可用脚本读取该文件自动激活对应 conda 环境再创建 venv。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

731

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

631

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

749

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1238

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

576

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

705

2023.08.11

从零到实战:Python 编程系统入门专题
从零到实战:Python 编程系统入门专题

本专题面向零编程基础及初学者,系统讲解 Python 编程语言的核心知识与实战技巧。内容涵盖 Python 基础语法、数据结构、函数与模块、常用标准库、简单算法思维,以及真实应用场景下的小项目实战。通过循序渐进的学习路径,帮助读者快速建立编程思维,掌握 Python 在数据处理、自动化脚本及日常开发中的实际应用能力,为后续深入学习 Web 开发、数据分析或人工智能打下坚实基础。

8

2026.01.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.6万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号