查看python 当前环境_Python venv虚拟环境 Activate命令的作用

本文探讨了Python venv虚拟环境中Activate命令的实际影响。主要发现Activate主要将虚拟环境路径添加到系统Path的最前面,影响pip安装模块的位置。而运行Python.exe时,即使不Activate,环境变量也会自动包含venv的site-packages目录,因此对执行py代码的影响有限。Activate主要在使用pip时起作用,确保模块安装在虚拟环境中。同时,venv依赖于系统Python的DLL和Lib,因此复制到其他机器时需要注意Python版本匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  之前在处理其它需求时,发现只要用venv目录下的python.exe来解释py代码就可以正常运行。本来以为完事了,突然想起来,这样的话根本没有运行Activate命令,没有进入Python虚拟环境啊。于是稍微研究了一下这个问题。

[Activate]

  看了下Activate源码,其中最重要的动作是把venv虚拟环境的路径临时添加到系统Path路径最前面,这样venv的pip命令就能把模块(库)安装到虚拟环境目录里。Path配置的信息可以在PowerShell里,通过 $env:Path 命令查看,能够清楚的看到运行Activate之后venv目录添加到了Path配置的最前面。

55bbdc25e6d5ca36ff013746e8a5c766.png

PowerShell中,通过 $env:Path 指令查看Path信息

f0043ba1f9e56a2a03b1bd78c7f0a2b7.png

运行Activate之后虚拟目录添加到了Path配置的最前面

[是否Activate进入虚拟环境对pip的影响]

  写一个py测试文件,引入os模块(库),然后执行 os.system("pip list")

c725ba84e76b077cce690189d2b27881.png

  Activate进入虚拟环境,执行,列出venv中已经添加的模块;

  用系统Python执行,列出系统Python中已经添加的模块。

  不Activate虚拟环境,直接用venv目录里的python.exe执行,列出系统Python中添加的模块

  也就是说不Activate进入虚拟环境,会调用系统Python的pip命令

[是否Activate虚拟环境对Python.exe执行py代码有什么区别]

  再编写一个py文件,引入sys模块(库),打印Python相关的环境变量

  print(sys.path)

首先用系统Python执行:

路径中包括 [当前源码目录、系统Python的dll和lib目录,以及系统Python的site-packages目录]

07d3a4bd2d25d5dc1f1acc70e4f4b2a8.png

当前源码目录、系统Python的dll和lib目录,以及系统Python的site-packages目录

Activate进入虚拟环境并执行:

结果包括 [当前源码目录、系统Python的dll和lib目录,venv目录、venv的site-packages目录]

146b0ebca56404a5f7f4ea5ca233a0a9.png

当前源码目录、系统Python的dll和lib目录,venv目录、venv的site-packages目录

不Activate虚拟环境,直接用venv目录里的python.exe执行:

结果包括 [当前源码目录、系统Python的dll和lib目录,venv目录、venv的site-packages目录]

a30f0c4b47a709ce82f97ff2d8b3e81c.png

当前源码目录、系统Python的dll和lib目录,venv目录、venv的site-packages目录

是否运行Activate都不影响最终结果

[结论]

  无论是否Activate,虚拟环境的python.exe在运行时,环境变量自动包含venv的site-packages目录。

  所以用venv的python.exe执行py代码,跟是否Activate虚拟环境没有关系。

  Activate影响的是pip安装模块(库)的时候。

  同时也清楚了venv里的Python还是继承系统Python的DLL和Lib,所以直接把venv拷贝给其它机器的话,至少需要对方机器里已经安装了同版本的Python。

相关视频

[视频] Python venv虚拟环境 Activate命令的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值