关于Python3中venv虚拟环境

本文介绍如何使用Python3.3以上版本自带的venv模块创建虚拟环境,实现项目环境隔离,避免包管理混乱和版本冲突。适用于Windows、Mac及Linux系统。
部署运行你感兴趣的模型镜像

Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv

venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持。每一个虚拟环境都有其自己的Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套Python包。他最大的好处是,可以让每一个python项目单独使用一个环境,而不会影响python系统环境,也不会影响其他项目的环境。

优点

  1. 使不同应用开发环境独立
  2. 环境升级不影响其他应用,也不会影响全局的python环境
  3. 防止系统中出现包管理混乱和版本冲突

windows创建虚拟环境

安装好的python3的环境,我的python版本是python3.5

我这里演示例子是在c盘根目录建立一个py3目录
进入到这个py3目录

创建虚拟环境

python -m evnv .

命令执行完成会在py3目录下看到如下文件
这里写图片描述

激活虚拟环境

还是在windows cmd下操作:
进入到Scripts,执行activate.bat,如下图表示激活成功
这里写图片描述

这个时候可以在虚拟环境进入到python3并安装我们需要的包而不会影响我们系统安装的python3的包环境,这里我在虚拟环境中安装了pymysql包,然后分别在虚拟环境和外面的环境中pip list列出包,可以看到,我们外面的包中并没有pymysql
这里写图片描述

这样一个虚拟环境我们就配置好了

Mac或linux创建虚拟环境

其实三个平台的方法没什么太大区别,这里通过Mac系统演示,python环境依然是python3.5

还是创建一个py3目录,然后进入到py3目录

localhost:py3 zhaofan$ pwd
/Users/zhaofan/py3

创建虚拟环境

python3 -m venv .

激活虚拟环境

source bin/activate

如下图:
这里写图片描述

这样虚拟环境就创建完成

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 我们正在讨论的是Python虚拟环境venv的定义。根据用户提供的引用,我们可以总结如下: 1. 引用[1]和[2]指出,venvPython 3.3+内置的库,用于创建轻量级的虚拟环境,提供与系统Python的隔离。 2. 引用[4]详细描述了venv创建的环境结构,包括bin(或Scripts)、include、lib等目录,以及它们的作用。 3. 引用[5]强调了虚拟环境的主要用途是项目隔离,允许每个项目有自己的Python解释器和包。 因此,我们给出venv虚拟环境的定义: **Python3-venv虚拟环境的定义** Python3-venv虚拟环境是一个由Python标准库`venv`模块创建和管理的隔离环境,它包含: - 独立的Python解释器(通常是系统Python解释器的副本或符号链接) - 专属的第三方包安装目录(位于`lib/pythonX.X/site-packages`) - 环境配置脚本(如激活脚本`activate`和配置文件`pyvenv.cfg`) 其核心设计目标是实现**项目级依赖隔离**,通过复制基础环境的结构但隔离包安装路径,避免不同项目间的包版本冲突以及系统Python环境的污染[^1][^2][^4][^5]。 --- ### 虚拟环境工作原理 根据引用[4],venv创建的环境结构如下: ``` venv/ ├── bin/ # 可执行文件目录(Windows为Scripts) │ ├── activate # 激活环境的脚本 │ ├── python # 指向特定版本解释器的符号链接 │ └── pip # 环境专属的pip ├── lib/ │ └── pythonX.X/ # Python版本号 │ └── site-packages/ # 三方包安装位置 └── pyvenv.cfg # 环境配置文件 ``` 关键特性: 1. **隔离依赖**:在虚拟环境中使用`pip`安装的包仅存在于`site-packages`中,不影响系统全局环境[^4]。 2. **独立解释器**:虚拟环境中的`python`命令指向创建时的基础解释器版本(如使用`python3.8 -m venv`则链接到系统Python3.8)[^3]。 3. **配置继承**:`pyvenv.cfg`中记录基础环境路径,但包搜索路径被重定向到本地`site-packages`[^4]。 --- ### 创建虚拟环境的正确方法 为避免引用[3]中出现的版本混乱问题,应明确指定Python版本: ```bash # 使用系统Python3.8创建环境 python3.8 -m venv myenv # 激活环境 source myenv/bin/activate # Linux/macOS .\myenv\Scripts\activate # Windows ``` --- §§相关问题§§ 1. 如何修复因系统Python版本升级导致的虚拟环境失效? 2. `venv`与`virtualenv`在实现隔离机制上有哪些本质区别? 3. 为什么虚拟环境中不需要安装`pip`但仍能使用? 4. 如何将虚拟环境迁移到其他机器使用? [^1]: Python官方文档明确建议使用venv隔离项目依赖 [^2]: 虚拟环境允许每个项目独立管理包版本 [^3]: 必须明确指定Python版本以保证环境稳定性 [^4]: venv通过重写包加载路径实现隔离 [^5]: 隔离环境是Python开发的最佳实践 </think> ### Python3-venv虚拟环境的定义与核心特性 Python3-venv虚拟环境是由Python标准库提供的**轻量级隔离环境**,其定义核心包含以下要素: 1. **环境隔离机制** 通过复制操作系统标准Python安装的文件结构,创建独立的目录树: ``` venv/ ├── bin/ # 可执行文件(含Python解释器) ├── lib/ # 依赖库和site-packages ├── include/ # C头文件 └── pyvenv.cfg # 环境配置文件 ``` 该结构确保所有操作(包安装、代码执行)仅在当前环境中生效,与系统Python完全隔离[^4]。 2. **核心功能特性** - **独立Python解释器** 虚拟环境中的`python`命令指向创建时指定的解释器版本(如`python3.8 -m venv`会固定使用3.8版本),避免因系统默认版本变更导致环境失效[^3]。 - **专属包存储空间** 所有通过`pip install`安装的包仅存放在`venv/lib/pythonX.X/site-packages`目录下,形成项目专属依赖库[^5]。 - **环境激活脚本** 提供`activate`脚本(支持bash/zsh/fish/PowerShell),通过临时修改`PATH`变量实现环境切换: ```bash source venv/bin/activate # 激活后终端提示符显示环境名 ``` 3. **技术实现原理** 虚拟环境通过两个关键技术实现隔离: - **路径重定向** 在`pyvenv.cfg`中配置`home`指向系统Python路径,同时设置`include-system-site-packages=false`禁用全局包[^4]。 - **符号链接机制** `bin/python`实际是系统Python解释器的符号链接,但运行时优先加载本地`site-packages`中的包[^4]。 4. **与系统环境的关系** $$ \text{虚拟环境} \approx \text{系统Python的精简副本} + \text{独立依赖层} $$ 这种设计既继承了系统Python的稳定性(无需重复安装解释器),又实现了依赖隔离(避免包冲突)[^2][^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值