python 虚拟环境的原理分析

Python数据分析入门:Pandas安装全攻略与虚拟环境最佳实践 Python数据分析的核心在于高效处理结构化数据,而Pandas库正是实现这一目标的关键工具。其底层原理基于NumPy数组构建,提供了DataFrame和Series两种核心数据结构,使得数据清洗、转换和分析变得直观高效。在技术价值层面,Pandas不仅大幅提升了数据处理效率,还通过与Matplotlib、Scikit-learn等库的无缝集成,构成了完整的数据科学工具链。在实际应用场景中,无论是金融数据分析、商业智能报表还是机器学习特征工程,Pandas都扮演着不可或缺的角色。要充分发挥其能力,首先需要掌 阅读详情

摘要说明:

本文对python虚拟环境的原理,进行了一些简单分析;分析清楚后,当机器中安装了多个版本的python或已经存在多个虚拟环境时,可以很清楚地知道应该如何处理,控制自己所需要运行的python解释器,并安装依赖库到自己指定的python环境中。

一. python 虚拟环境的创建实例

python虚拟环境,是为不同的python项目创建了一个隔离运行环境,拥有自己独立的python解释器和依赖库。创建python虚拟环境的方法有很多,由于python 3.5后,已经自带了默认库venv,因此,就以venv来演示创建虚拟环境。

在Dos命令行模式下,先创建一个总目录venv_demo,用来集中管理虚拟环境;然后,进入该目录:

  • 创建虚拟环境: python –m venv env_A

  • 激活虚拟环境:env_A\scripts\activate

  • 安装依赖库: pip install click (可查看目录: env_A\Lib\site-packages)

  • 启动python解释器:python

  • 退出python 解释器:exit()

  • 退出虚拟环境:deactivate

按以上同样的操作,你可以创建其他名称的虚拟环境,如 env_B, 并安装依赖库pip install tqdm ,不安装click(可查看目录:env_B\Lib\site-packages)。

完成以上2个虚拟环境的创建和依赖库的安装后,可以分别激活不同的虚拟环境,然后在运行python后,观察执行import click , import tqdm的结果,以确认它们确实为2个独立的隔离环境。

二. python虚拟环境的原理分析

请认真理解接下来的几点分析:

  1. 开启的python解释器环境,取决于实际运行的python.exe文件

  1. 依赖库安装的位置,取决于实际运行的pip.exe文件的位置

  1. 执行 python 命令,将根据path路径优先级,查找并运行第1个找到的python.exe

  1. 执行 pip 命令,将根据path路径优先级,查找并运行第1个找到的pip.exe

  1. 可以不用简化的python, pip 命令,而是直接指定要运行的python.exe, pip.exe

如何获知python, pip 命令运行时会首先找到的python.exe,pip.exe的文件位置:

在命令行中,输入:where python 或 where pip , 排在第1位的就是。

如何获知当前正在运行的python.exe的文件位置:

Importsys

sys.executable

充分理解和运用以上原理分析和工具命令,就可以了解和控制需要运行的python环境,并安装依赖库到指定的python库目录。

有时大家不确定具体会运行哪个版本的python或 pip安装的依赖库到哪里去了,关键原因是由于我们已经习惯了只使用 python 或 pip 命令,而具体运行哪个目录下的python.exe,pip.exe, 是操作系统根据path来查找的。而大部分的python安装说明,都是在告诉我们应该如何设置环境变量或激活相应的虚拟环境。而为什么要这么做呢?

其目的就是:在当前命令行运行环境下,通过激活虚拟环境,可将我们指定的环境变量或虚拟环境的目录加到path变量的最前面位置,这样当我们只键入python或 pip时,系统就会优先找到并运行我们需要的python.exe,pip.exe。若path的设置或系统查找的顺序不如所愿,出来的结果就不好理解和控制了。

三. 基于原理分析,对创建虚拟环境实例进行说明

本文第一步中使用的命令和操作看起来没有什么特殊。在以上原理分析的基础上,我们再仔细分析一下具体运行的文件是什么:

序号

命令

说明

1)

创建虚拟环境:

python –m venv env_A

这时,运行的python.exe, 是系统通过path设置,首先找到的python.exe,(可通过where python 来获得),创建的新的虚拟环境的python版本,跟本次运行的python.exe的版本一致。

2)

激活虚拟环境:

env_A\scripts\activate

该命令,明确执行的是

env_A\scripts\activate 命令,该命令执行后,会激活env_A虚拟环境,关键就是把虚拟环境env_A\scripts的路径信息,加到了 path的第1位(查看 activate文件的源代码,可以更清楚地了解到是怎么做的)

3)

安装依赖库:

pip install click

由于已经将env_A\scripts的路径信息加到了path的第1位,因此,执行pip 时,运行的将是 env_A\scripts\pip.exe文件;依赖库安装的位置,也将是 env_A环境中的库目录 env_A\Lib\site-packages

4)

启动python解释器:

python

由于已经将env_A\scripts的路径信息加到了path的第1位,因此,执行python时,运行的将是env_A\scripts\python.exe

5)

退出python 解释器:

exit()

6)

退出虚拟环境:

deactivate

由于已经将env_A\scripts的路径信息加到了path的第1位, deactivate 执行时,运行将是 env_A\scripts\deactivate.bat 文件,退出env_A虚拟环境,将env_A\scripts的路径信息从path中删除。

(查看deactivate.bat文件的源代码,可以更清楚地了解到是怎么做的)

以上都在常规操作,我们用非常规操作再分析一次:

序号

命令

说明

1)

激活虚拟环境:

env_A\scripts\activate

该命令,明确执行的是

env_A\scripts\activate 命令,该命令执行后,就会把虚拟环境env_A\scripts的路径信息,加到 path的第1位

2)

安装依赖库:

env_B\script\pip.exe install yarl

执行 pip, 将会运行 env_A\scripts\pip.exe, 而我们现在指定运行env_B\scripts\pip.exe文件,大家分析一下,yarl依赖库会安装在哪里:

env_A\Lib\site-packages (错)

env_B\Lib\site-packages (对)

3.1)

启动python解释器:

python

import yarl

env_A激活时,执行python,运行的将是env_A\scripts\python.exe,启动的是env_A的python运行环境;但由于没有安装 yarl, 执行 import yarl ,会提示没有该模块

3.2)

启动python解释器:

env_B\scripts\python.exe

import yarl

env_A激活时,

指定运行env_B\scripts\python.exe,启动的是 env_B中的python运行环境;由于已经安装了yarl, 执行 import yarl, 没有问题。

4)

退出虚拟环境:

deactivate

由于已经将env_A\scripts的路径信息加到了path的第1位, deactivate 执行时,运行将是 env_A\scripts\deactivate.bat 文件,退出env_A环境,将env_A\scripts的路径信息从path中删除。

不同的创建python虚拟环境的工具,在具体实现和功能扩展上,可能会有些不同,但需要明确了解并控制运行的python.exe, pip.exe的文件位置,这一要求对我们来说应该是不变的。在理解了这一原理后,可以灵活运用,为自己的项目更方便地创建需要的python环境。

比如stable-diffusion-webui, 就是将虚拟环境目录固定创建在项目的venv目录中,然后结合 webui.bat文件,固定调用 venv 目录中的 python.exe, pip.exe, 来控制和安装项目所需要的python版本和依赖库的安装位置。

Python 领域 Conda 虚拟环境的安全审计与合规性 在 Python 开发过程中,Conda 虚拟环境被广泛应用于隔离项目依赖,确保不同项目之间的依赖不会相互冲突。然而,随着软件供应链安全问题的日益凸显,Conda 虚拟环境的安全审计与合规性变得至关重要。本文的目的在于深入探讨如何对 Conda 虚拟环境进行全面的安全审计,确保其符合相关的安全标准和合规要求。范围涵盖了 Conda 虚拟环境的创建、管理、依赖分析以及安全漏洞检测等方面。 阅读详情

相关推荐

Python pip在虚拟环境中的运用

本文旨在全面介绍Python虚拟环境中pip的使用方法,包括基础操作、高级技巧和最佳实践。内容涵盖从初学者到高级开发者所需的知识点,帮助读者掌握Python项目依赖管理的核心技能。本文首先介绍虚拟环境的基本概念,然后深入探讨pip在虚拟环境中的具体运用,包括安装、配置和高级技巧。最后提供实际应用场景和常见问题解答。pip: Python包安装程序,是Python的官方包管理工具虚拟环境: 隔离的Python运行环境,包含独立的解释器和包安装目录venv: Python标准库中的虚拟环境创建模块。

AI Python 编程之道的博客 1113

彻底搞懂Python环境:原理、管理与Conda、uv实战

这篇博客主要讲解Python虚拟环境的核心机制,从环境构成原理到实际管理操作,讲解为什么需要虚拟环境、虚拟环境如何实现隔离、以及如何使用Conda管理虚拟环境的原理和操作

勇往直前的博客 946

《Python 虚拟环境全解析:从基础原理到实战技巧与生态管理》

本文全面解析Python虚拟环境的核心概念与实用技巧,涵盖venv、virtualenv、pipenv、poetry等主流工具的使用方法。从基本原理到实战案例,深入探讨虚拟环境如何解决依赖隔离、版本控制和部署一致性等问题。文章提供数据分析项目构建示例,分享最佳实践和常见问题解决方案,并展望虚拟环境与Docker、FastAPI等技术的融合趋势。帮助开发者构建高效、稳定的Python项目开发环境,提升开发效率与协作质量。

铭渊老黄 181

第八篇:隔离即力量:Python虚拟环境的终极指南

在Python中,虚拟环境是一个独立的目录树,其中包含了运行特定项目所需的Python解释器和一系列附加包。每个虚拟环境都是自成一体的,与系统全局Python环境隔离开来。简而言之,如果Python是一片广阔的土地,那么每一个虚拟环境就是这片土地上独立的小岛。技术上讲,虚拟环境的创建涉及到“环境隔离”。这是通过建立一系列指向特定版本的Python解释器和库的符号链接来实现的。当激活虚拟环境时,我们实际上是在告诉系统:“对于任何接下来的Python操作,请使用这个特定环境下的Python解释器和库”。

凡江林的博客 2255

Python 领域 Conda 虚拟环境的多用户共享设置

在 Python 开发过程中,不同的项目可能依赖于不同版本的 Python 解释器以及各种 Python 库。Conda 作为一个强大的包和环境管理系统,能够帮助开发者创建和管理独立的虚拟环境,避免不同项目之间的依赖冲突。然而,在团队开发或者多用户使用的场景下,每个用户单独创建和维护相同的虚拟环境会造成资源的浪费,并且增加了环境配置的复杂性。因此,本文的目的是详细介绍如何在 Python 领域中设置 Conda 虚拟环境的多用户共享,以提高资源利用率和开发效率。

AI Python 编程之道的博客 1037

Python虚拟环境的原理及使用详解

Python的虚拟环境极大地方便了人们的生活。本指南先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。 注意:本指南在macOS Mojave系统上使用最新版本的Python 3.7.x。 1. 为什么使用虚拟环境? 虚拟环境为一系列潜在问题提供简单的解决方案,尤其是在以下几个方面: 允许不同的项目使用不同版本的程序包,从而解决依赖性问题。例如,可以将Project A v2.7用于Project X,并将Package A v1.3用于Project Y。 通过捕获需求文件中的所有包依赖项,使项目自包含且可重现。 在没有管理员权限的主机上安装软件包。

Python进阶教程丨虚拟环境搭建

举一个不恰当的例子:老渣的微信里面有同事,同学还有小美 ABCDE,某天给妹子发“宝贝晚安”消息时误发给了同事……部分原因是因为用一个微信处理不同的场景导致容易出错。这件事情后,老渣的解决方法也很简单,就是微信多开,再创建一个号,账号数据独立,工作生活两不误。话说回来,当我们开发项目时,如果共用环境也容易出现问题,那么创建独立的环境就能很好的解决问题。

凌小添的博客 5783

艾德克斯电子负载IT8510维修

2年前从朋友那收了这台艾德克斯电子负载,收来的时候上面的编码器就不好用,就是旋转的时候一会增加一会减小这种现象,不过其他功能都是正常的,自己也就将就用这。直到昨天,电子负载开机发现空载的时候电压不是0,开始有mV级的跳动,心想这个不正常。又测试了一下恒流功能,已经不能正常工作了。

mainbanp 4653

python自带的轻量级虚拟环境venv

python的3.3版本后,引入venv,有什么优点,具体如何用?

ybdesire的专栏 2万+

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 273

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4371

Python 的虚拟环境

虚拟环境是Python解释器的一个私有的副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局Python解释器。虚拟环境非常的有用,可以在系统中Python解释器中避免包的混乱和版本的冲突。为每个程序单独创建虚拟环境可以保证程序只能访问虚拟环境中的包,从而保持全局解释器的干净简洁。在想要的位置新建文件夹,鼠标点击。

hu_wei123的博客 2248

别再死记硬背了!用TwinCAT 3手把手教你配置EtherCAT伺服驱动的PDO映射(DS402协议)

本文详细介绍了如何使用TwinCAT 3配置EtherCAT伺服驱动的PDO映射(DS402协议),涵盖环境准备、设备扫描、PDO映射实战及高级技巧。通过具体操作步骤和常见问题排查,帮助工程师快速掌握EtherCAT通信配置,提升运动控制系统的效率和稳定性。

weixin_29185493的博客 322

python安装虚拟环境没有activate_Python venv虚拟环境Activate的作用

今天在处理其它需求时,发现只要用venv目录下的python.exe来解释py代码就可以正常运行。本来以为完事了,突然想起来,这样的话根本没有运行Activate命令,没有进入Python虚拟环境啊。看了下Activate源码,其中最重要的动作是把venv虚拟环境的路径临时添加到系统Path路径最前面,这样venv的pip命令就能把模块(库)安装到虚拟环境目录里。Path配置的信息可以在Power...

weixin_39834328的博客 2939

卷积神经网络-猫狗识别(附源码)

利用python实现一个卷积神经网络,训练猫狗数据集,实现对猫狗图片的预测识别

m0_63223213的博客 2万+

手把手教你用 Cursor 写一个完整的 Web 应用(含前后端 + 部署)

本文介绍如何利用Cursor AI工具从零开发一个完整的全栈待办事项Web应用。文章针对开发者常见痛点——无法独立完成项目闭环,提供了一套AI驱动的全栈开发范式。通过Vue3+Node.js+MySQL技术栈,全程由Cursor自动生成项目架构、前后端代码、数据库设计,并解决联调、部署等关键问题。重点展示了如何用AI完成:项目规划与架构设计、后端接口开发、前端页面实现、跨域联调、打包优化及云端部署全流程。该方法将传统需要3-5天的开发工作压缩至1小时内完成,产出规范可上线的项目,特别适合想突破"碎

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 634

CosyVoice项目Python版本兼容性问题解决方案

在使用FunAudioLLM的CosyVoice项目时,部分用户在安装环境依赖时遇到了Python版本兼容性问题。错误信息显示,onnxruntime-gpu 1.16.0版本需要Python 3.9或更高版本,而用户当前使用的是Python 3.8环境。 ## 错误分析 从错误日志中可以清楚地看到,系统忽略了多个需要更高Python版本的onnxruntime-gpu版本。具体表现为: - ...

gitblog_00612的博客 504

C#与倍福Plc通信——使用仿真软件模拟倍福PLC运行

安装这个软件之前先安装VisualStudio,本文安装这个软件时已经安装了VisualStudio2019。1、下载倍福PLC编程软件TwinCAT。

qq_34059233的博客 3664

【Python虚拟环境配置终极指南】:10分钟掌握开发环境隔离核心技术

快速掌握Python虚拟环境配置方法,解决项目依赖冲突问题。涵盖venv、virtualenv等工具的使用场景与核心操作步骤,实现开发环境高效隔离。支持多版本Python管理,提升项目可移植性与协作效率,值得收藏。

IterStream的博客 400

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Krita AI Diffusion插件安装问题解决方案:Python虚拟环境配置

Krita AI Diffusion插件安装问题解决方案:Python虚拟环境配置 问题背景 在使用Krita AI Diffusion插件时,许多Linux用户可能会遇到服务器安装失败的问题。典型表现为安装过程中出现"process exited with code 1"错误,这通常与Python环境配置不当有关。 核心问题分析 经过技术分析,这类错误最常见的原因是系统中缺少...

gitblog_07341的博客 845

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

5分钟彻底搞懂Python虚拟环境与依赖解析机制,告别ImportError

5分钟掌握Python虚拟环境搭建与依赖解析原理,解决模块冲突与ImportError问题。详解venv、pip及主流Python依赖管理工具的应用场景与最佳实践,隔离项目环境,提升开发效率。方法简单实用,值得收藏。

AlgoInk的博客 787

Python虚拟环境终极指南:新手从零到精通

想象你有一台电脑,上面要运行多个Python项目:不使用虚拟环境(❌ 错误做法): 使用虚拟环境(✅ 正确做法): 📚 专业定义 虚拟环境是一个独立的Python运行环境,它包含:问题1:版本冲突 问题2:依赖污染 问题3:难以复现 问题4:权限问题 问题5:团队协作困难 ✅ 使用虚拟环境的5大好处 好处1:完全隔离 好处2:依赖清晰 好处3:易于复现 好处4:安全无忧 好处5:团队协作友好 1.3 虚拟环境工作原理图解 1.4 常见虚拟环境工具对比 工具 类型 安装难度 学习难度 速度 推荐指

qq_45825991的博客 972

VSCode中Python虚拟环境自动切换:5分钟掌握提升效率的关键技能

掌握VSCode的Python虚拟环境自动切换,提升开发效率。适用于多项目开发场景,通过配置工作区设置与Python扩展,实现环境智能识别与切换。省去手动配置烦恼,确保依赖隔离与运行稳定,开发更流畅,值得收藏。

ProcePerch的博客 1112

关于pytorch虚拟环境及具体bug问题修改

我的pytorch虚拟环境在D盘,相应python解释器也在D盘(一起),但是我的pycharm中的项目在C盘,使用的是pytorch的虚拟环境,这是为什么行得通呢?这种 “解释器在 D 盘,项目在 C 盘” 的分离,就像 “用 D 盘的播放器播放 C 盘的视频文件” 一样自然,完全不冲突。,只要 PyCharm 能正确找到虚拟环境中的 Python 解释器,无论解释器和项目文件在哪个磁盘分区,都能正常工作。,就能调用该环境的解释器和依赖库,与项目文件(C 盘)的位置无关。

m0_65111950的博客 735
上一篇: 用简单实例解释说明 yield 的执行方式
下一篇: Python 运行时的目录信息
快乐清风客
博客等级 码龄19年 191粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值