一文带你掌握Python自带venv虚拟环境
wuantov 2025-08-06 23:31 8 浏览
前边几篇文章,我们介绍了如何使用 conda 来管理 python 的虚拟环境。这时可能有人会有疑问,既然这个功能这么有用,那有官方提供的解决方案吗?其实是有的,在 python 3.3 版本及以后,python 中自带了 venv 模块,通过该模块可以快速方便的创建和维护虚拟环境。以下文章将详细介绍 python 中 venv 的使用。
venv 是什么
venv 是 python 的一个标准库中的一个模块,可以创建和管理 python 的虚拟环境。可以使每个项目的环境都是独立存在的,使每个项目都互不干扰,互不影响。
没有 venv 是什么情况?
在 python 中,如果我们不设置虚拟环境,则 python 默认会使用全局环境(python 的实际安装目录),如果只是单纯的学习或者只有一个项目的时候,这不会有什么问题,然而如果我们现在存在多个项目,或则要调试不同的版本的第三方包就会有以下问题:
- 不同项目之间相同第三方包版本不同
- 不同项目中的第三方包更新是否会相互影响
- 项目迁移时,环境无法迁移或者迁移繁琐
- 依赖混乱,项目所依赖的第三方库小于现有安装的库
- 三方库版本无法准确控制
使用虚拟环境
- 创建虚拟环境
使用如下命令创建项目的虚拟环境(在项目根目录执行)
python -m venv 虚拟环境名
如上代码中,我们可以通过命令行在代码文件夹中创建自定义的虚拟环境,一般虚拟环境都会按照 .venv 的名字命名,这样像 git 这样的代码版本工具会忽略对其的文件管理。
可以看到,运行虚拟环境创建命令后,会生成一个.venv 的目录,包含 Lib 和 Scripts 文件夹等。
- 启用当前虚拟环境
# 运行.venv目录下的active
.venv\Scripts\activate
如上图,运行完成后,可以看到 cmd 命令行前有当前虚拟环境的名字(.venv),此时表明已经在当前的虚拟环境了。
- 在当前环境安装第三方库
# 在当前虚拟环境下运行
pip install requests
如上图所示,我们在虚拟环境中安装 requests 包,可以看到在虚拟环境文件夹 .venv\Lib\site-packages 中就有了 requests 包和其依赖(使用 pip list 查看)。
- 卸载当前环境
# 当前虚拟环境下运行
.venv\Scripts\deactivate.bat
如上图所示,运行 deactivate.bat 就可以卸载当前虚拟环境,命令行前的(.venv)就没有了。
导出和导入虚拟环境
当我们需要将项目做迁移或者给其他同事的时候,就需要告诉对方我们用了哪些三方库,且三方库的版本是多少。传统的方式,可能会写一个文档,记录当前项目中的信息,但是这样整理既麻烦,又不一定能保证准确,这时使用虚拟环境的导入和导出功能将给我们提供极大的方便。
- 导出环境配置(需要激活当前虚拟环境)
# 生成环境配置文件
pip freeze > requirements.txt
运行完成后会在项目根目录生产一个requirements.txt 的文件,内容如下:
可以看到,文件里包含了所有三方库的名字及其版本,这样在做项目迁移的时候,就可以将此文件带上,则可以非常容易的安装三方依赖。
- 导入环境配置
当我们拿到一个新的项目时,此时项目中还没有虚拟环境的目录,因此需要手工创建,创建完成后激活该虚拟环境(参照上边虚拟环境创建步骤)。
接下来就可以导入环境配置
# 当前虚拟环境下
pip install -r requirements.txt
如上图,运行完导入命令后,即可导入完成项目环境所要依赖的三方库(github 上很多开源项目都会携带requirements.txt 文件来描述所需的依赖)。
在 pycharm 中创建虚拟环境
pycharm使用虚拟环境非常方便,按照下方步骤即可轻松使用,当然能pycharm也默认使用虚拟环境。
- 新建带有 venv 的项目
如上图,在创建新项目的时候,选择 项目venv, 并选择本地 python 解释器
项目创建完成后,可以看到,目录中就会包含.venv 的文件夹。
- 导入带有requirments.txt 的项目
如上图,当导入带有requirments.txt 的项目时,pycharm 就会自动弹出提示框,创建虚拟环境,只需要点击确定即可完成创建和下载。
在 vs code 中创建虚拟环境
vs code没有pycharm那么自动化,但是也非常容易配置,步骤如下:
- 创建 venv 虚拟环境
如上图,在命令行输入 python: create environment 后,在选择 创建环境的选项。
选择 Venv 选项。
选择本地解释器。
创建项目成功后,即可看到.venv 命名的文件夹。
- 导入带有 requirments.txt 文件的项目
vs code 不会自动弹出创建虚拟环境选项,需要手动创建。
在命令行输入 python: create environment 后,在选择 创建环境的选项。
选择 Venv 选项。
选择本地解释器。
此时会显示 requirements.txt 文件的选项,勾选并确定。
此时 vs code 就会自动创建和下载项目的虚拟环境。
与 conda 区别
这时可能会有一个疑问,那究竟是使用 venv 呢?还是使用 conda 呢?两者有以下区别:
- venv 是 python 的标准库,在一些不允许安装额外软件的场景下,venv 是必然的选择。
- venv 更加轻量,但是只适用于管理项目的包,如果涉及到需要使用不同版本的 python,就需要借助 conda 来管理。
- 在 venv 环境中,不要将项目文件放到.venv 文件夹中,大多数情况,此目录会被 git 等屏蔽,有可能导致项目文件缺失,而 conda 不存在项目中的文件夹,所以对新手友好。
在实际使用上需要根据自身需求来选择,如果单纯的学习或者开发,使用 venv 是个很好选择。在工作中,要尽量根据公司的要求来设置,确保不会因为个体差异导致项目问题(开声讨大会很难受的)。
相关推荐
- UV 工具深度解析与实践指南
-
一个工具可以替代pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv等一、工具概述1.1核心定位UV是由Rust编写的新一代Python生态...
- MCP 官方文档:开发你自己的MCP —— MCP 天气服务
-
一、MCP简介MCP是一个开放协议,它为应用程序向LLM提供上下文的方式进行了标准化。你可以将MCP想象成AI应用程序的USB-C接口。就像USB-C为设备连接各种外设和配件提...
- 一文使你彻底学会FastAPI
-
什么是API?想象一下,你在一家餐馆,你想点一些食物。为了得到你想要的食物,你和服务员交谈,告诉他们你的订单。然后,服务员将您的订单带到厨房,厨师会根据您的要求准备食物。最后,服务员把你的食物带回...
- 手把手教你进行Python虚拟环境配置
-
/1前言/咱们今天就来说一下Python的虚拟环境,可能有的小伙伴会疑惑,Python的虚拟环境有什么用呢?接下来我们一起来探讨一下。/2虚拟环境的作用/咱们今天就来说一下Python的虚拟环...
- LangGraph集成DeepSeek实现AI对话
-
本文介绍如何使用AI开源框架LangGraph,集成调用DeepSeek大模型,实现AI对话功能,并给出Python示例代码。一、LangGrap是什么LangGrap:LangGrap是一个用于构...
- 一文带你掌握Python自带venv虚拟环境
-
前边几篇文章,我们介绍了如何使用conda来管理python的虚拟环境。这时可能有人会有疑问,既然这个功能这么有用,那有官方提供的解决方案吗?其实是有的,在python3.3版本及以后,...
- Pytorch详细安装过程
-
1、安装anaconda官网(https://www.anaconda.com/products/distribution#Downloads)下载,使用管理员身份运行(不使用似乎也没事)这里选择Ju...
- Python简介与开发环境搭建详细教程
-
1.1Python简介与开发环境搭建详细教程一、Python语言简介1.Python的核心特点2.Python的应用领域表1.1Python主要应用领域领域典型应用常用库Web开发网站后端D...
- Python开发中的虚拟环境管理
-
Python开发中,虚拟环境管理帮助隔离项目依赖,避免不同项目之间的依赖冲突。虚拟环境的作用隔离依赖:不同项目可能需要不同版本的库,虚拟环境可以为每个项目创建独立的环境。避免全局污染:全局安装的库可...
- Python项目创建全流程指南
-
以下是创建Python项目的超详细步骤指南,涵盖从环境配置到项目部署的全流程:一、环境准备安装PythonO官网下载:访问python.org下载最新稳定版O验证安装:终端输入pyth...
- LangChain开发MCP Server和MCP Client
-
本文介绍了如何通过LangChain实现MCP调用。通过模拟一个简单的算术计算器,基于MCPServer运行,并使用MCPClient进行调用。最终,通过集成DeepSeek大...
- 怎么给虚拟环境安装pdfplumber
-
1.找到虚拟环境激活脚本位置你的虚拟环境在C:\Users\shiqi\PycharmProjects\pythonProject2\.venv路径下,激活脚本Activate.ps1(Pow...
- Python调试器实现断点系统
-
在软件开发过程中,调试是不可或缺的重要环节。断点系统作为调试器的核心功能,允许开发者在程序执行的特定位置暂停程序运行,检查变量状态、分析程序流程,从而快速定位和解决问题。断点系统原理断点系统的实现基于...
- Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能
-
这篇文章不谈江流所专研的营销与运营,而聊一聊技能学习之路,聊一聊Python这门最简单的编程语言该如何学习,我完成的第一个Python项目,将任意公众号的所有历史文章导出成PDF电子书。或许我这个Py...
- 能跑源码,还提供数据集:这里有一个入门企业级验证码识别项目
-
机器之心专栏作者:kerlomz网上关于验证码识别的开源项目众多,但大多是学术型文章或者仅仅是一个测试demo,那么企业级的验证码识别究竟是怎样的呢?1.前言网上关于验证么识别的开源项目众多,但大...
- 一周热门
- 最近发表
- 标签列表
-
- 修改ip地址 (28)
- 静态ip更换 (2)
- 指定ip切换 (12)
- ip库ip切换 (4)
- 淘宝店铺采集 (14)
- 微服务治理 (4)
- phash (7)
- mongo find (24)
- math保留两位小数 (21)
- cmd ip (15)
- 手机网络ip动态 (33)
- 随机更改ip地址 (7)
- drop column (23)
- navicat16 注册机 (25)
- crosscheck archivelog all (3)
- jm资源 (2)
- read by other session (10)
- python gui库 (21)
- 企业微信使用 (31)
- 知识付费源码五网合一 (25)
- 模糊查询sql (6)
- ip地址切换 (24)
- gc buffer busy acquire (7)
- 海外节点 (5)
- pycharm2020.2永久激活 (25)