Python 虚拟环境 venv 创建保姆级教程

725 字
4 分钟
Python 虚拟环境 venv 创建保姆级教程

既然我们要开始聊 Python 开发,有一个痛点我们肯定都会遇到:系统里通常只装了一个 Python 3 版本,所有的第三方包都会被 pip 塞进同一个 site-packages 目录下。

想象一下,如果我们同时开发两个项目,应用 A 必须用 Jinja 2.7,而应用 B 却依赖老旧的 Jinja 2.6,这时候系统里的 Python 就会左右为难。为了解决这种版本打架的问题,我们必须为每个应用创建一套“隔离”的 Python 运行环境。

今天我们就以创建一个 newproject 为例,看看我们如何利用内置的 venv 模块来打造这个独立的小世界。


1. 建立项目阵地#

首先,我们先创建一个存放代码的文件夹。打开终端或命令行,执行以下操作:

mkdir newproject
cd newproject

2. 搭建隔离环境#

newproject 目录下,我们直接调用 Python 的 venv 模块来初始化环境。我们习惯把这个环境起名叫 .venv,这样它在项目里就是一个隐藏文件夹。

# 执行这条命令后,Python 会把一套完整的运行环境拷贝到 .venv 文件夹里
python -m venv .venv

3. “进入”我们的虚拟环境#

环境建好了,但我们还没进去。我们需要通过“激活(activate)”脚本,让当前的终端识别这个隔离环境。

  • 如果我们在 Windows 平台上:

    • CMD: .venv\Scripts\activate

    • PowerShell: .\.venv\Scripts\Activate.ps1

  • 如果我们在 macOS 或 Linux 上:

    source .venv/bin/activate

重点观察: 激活成功后,我们的命令行提示符前会多出一个 (.venv) 字样。这意味着从现在起,我们所有的 pip install 操作都只会影响这个 newproject,而不会动系统全局的 Python。


4. 管理依赖包#

现在我们可以根据需求,在隔离环境里安装不同版本的包了:

  • 定向安装: pip install jinja2==2.7

  • 导出清单: 当我们把环境配好后,记得运行 pip freeze > requirements.txt。这份清单就是我们项目的“配方”,别人拿到代码后,只需 pip install -r requirements.txt 就能完美复刻我们的环境。


5. 退出与销毁#

当我们忙完 newproject 的活儿,想切换回系统环境或者去干别的,流程也非常简单。

退出环境#

直接在终端输入:

deactivate

你会发现前面的 (.venv) 消失了,一切恢复如初。

彻底删除#

如果我们觉得这个项目不需要了,或者想推倒重来,直接删除文件夹即可venv 没有任何系统残留,它就是一个纯粹的文件夹。

  • 手动: 在文件管理器里右键删除 .venv 文件夹。

  • 命令行:

    • Windows: rd /s /q .venv

    • macOS/Linux: rm -rf .venv

小结#

venv为应用提供了隔离的Python运行环境,解决了不同应用间安装多版本的冲突问题。

微信公众号

搜一搜 IMMOEWAH

技术/人文/思辨/随笔

微信公众号

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Python 虚拟环境 venv 创建保姆级教程
https://blog.moewah.com/posts/python-venv-virtual-environment-tutorial/
作者
MoeWah
发布于
2025-12-07
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
Docker入门简明教程:一篇文章快速上手
虚拟化与运维 如何解决软件开发中的环境配置难题?本文详解Docker的原理与优势,提供从虚拟机到容器技术的对比分析及实战应用指南,帮助开发者高效部署和管理应用。
2
Ubuntu/Debian 卸载命令全解:apt remove/purge/autoremove 的区别
虚拟化与运维 apt remove、apt purge、apt autoremove 三个卸载命令的区别详解:remove 保留配置、purge 清除配置、autoremove 清理孤儿依赖,附 --simulate 预览技巧与官方文档出处,Ubuntu/Debian 用户避坑指南。
3
Docker Volume 与 Bind Mount 怎么选?区别、性能对比、双向迁移实战
虚拟化与运维 Docker Volume 和 Bind Mount 有什么区别?性能差距大吗?一文讲透数据卷与绑定挂载的管理边界、适用场景与迁移便捷性,附双向转换完整命令:卷迁宿主机目录、目录转数据卷,全部实测可抄。数据库用卷、开发热重载用绑定挂载,自部署选型不再纠结。
4
SSH 终端下 nano/vim 编辑器卡死问题:terminfo 不兼容排查修复
虚拟化与运维 SSH 连接服务器后 nano/vim 打开即卡死、乱码,方向键退格失效,但 ls/cat 正常?根因是 TERM 环境变量与服务器 terminfo 数据库不兼容。本文给出 4 步排查法、TERM=xterm 修复命令与 256 色保留方案。
5
GhostVM:给 AI Agent 一个完整的 Mac,而不是容器!
虚拟化与运维 介绍 GhostVM——基于 Apple Virtualization.framework 的 macOS 虚拟机工具。支持近原生性能、自包含 bundle、秒级克隆,提供完整的 CLI (vmctl) 覆盖 GUI 功能,适合 AI agent 隔离环境和多项目开发者。
随机文章 随机推荐

评论区

Profile Image of the Author

关于作者

MoeWah

我是 MoeWah,喵斯基部落的作者。一个折腾自托管、群晖 NAS、虚拟化运维与 SEO/GEO 实践的独立博主,10 年以上的企业站运维与SEO优化经验,文章来自真实部署与踩坑记录。为自己记录,为同路人分享。
专题
分类
站点统计
文章
205
分类
9
标签
449
总字数
413,918
运行时长
0
最后活动
0 天前

目录