合肥网站建设巴中网站建设

无锡右丰嘉美时装有限公司 2026/09/09 17:31:09

在其他地方查看文章:Python全局环境和虚拟环境(venv) - Liu Zijian's Blog - 一个个人博客网站

1.概述

在进行python项目开发时,不同项目可能需要依赖的python版本是不同的,有时电脑上需要安装好几个不同版本的python解释器。而且在开发过程中,需要依赖一些第三方的包,不同项目依赖的第三方包及其版本也不相同,需要进行区分。

类似node.js使用npm可以全局安装一些依赖包,也可以配合项目package.json为每个项目单独安装依赖,但是对于python来说,不仅仅依赖包可以分别安装,不同项目甚至可以采用不同python解释器,这个就是通过python的虚拟环境实现的。

环境,就是python解释器 + 依赖包。python虚拟环境的作用就是实现环境的隔离,允许你在不同项目中使用不同的包版本和python版本,隔离项目依赖,避免了包冲突,确保项目的一致性和可移植性。

本文基于 windows + python 3.x 介绍默认的虚拟环境工具venv

2.全局环境和虚拟环境

2.1 全局环境

python安装到本地后,打开安装目录后可见

其中Lib,Scripts文件夹和python.exe自然形成一个全局环境

  • Lib/下是模块和包,凡是第三方模块和包统一都放在了Libsite-packages文件夹内,否则都是标准库模块和标准库包。

  • Scripts/内是一些可执行的文件,例如pip.exe

  • python.exe 即python解释器

设置环境变量后,随便打开一个CMD,执行python,使用的是全局环境的python

2.2 虚拟环境

python3自带了一个虚拟环境工具venv

在python环境变量设置好后,在asas空文件夹下打开CMD,执行python -m venv myenv命令,文件夹内会生成一个myenv文件夹,我们就创建好了一个叫myenv的虚拟环境,在这个asas文件夹下的项目代码可以都依赖这个虚拟环境,所以虚拟环境也是以当前安装的python全局环境为模板复刻而来的

和全局环境一样,虚拟环境也会存在Lib,Scripts文件夹,不同的是,虚拟环境的Lib文件夹下只有site-packages一个文件夹,用于保存项目自身的第三方依赖,也可以理解为虚拟环境下Lib文件夹内只保存该项目本身需要的第三方的依赖。

全局环境的python.exe在虚拟环境下则跑到Scripts文件夹里面去了。

虚拟环境,实际上就是全局环境的一部分文件复制一份分配给了不同的项目而已。

CMD切换到myenvScripts目录下,执行activate.bat,会出现一个(myenv)开头的终端,此时进入的就是该项目的虚拟环境,使用的是虚拟环境的python

执行activate.bat,就是在激活虚拟环境,虚拟环境需要激活才能生效,直接CD到asas文件夹下执行python命令,使用的还是全局环境。

可以用不同的python版本创建不同虚拟环境的项目,就实现了每个项目依赖不同python版本,相互隔离运行

3.不同环境的包依赖规则

  1. 全局环境和虚拟环境可以各自安装第三方依赖包,全局环境项目依赖的第三方包引用自全局环境Libsite-packages,虚拟环境项目依赖的第三方包引用自项目自身虚拟环境Libsite-packages

  2. python使用pip管理第三方依赖,全局环境执行pip install时,安装在全局环境Libsite-packages内,虚拟环境执行pip install时,安装在虚拟环境Libsite-packages内

  3. 虚拟环境项目在依赖标准库模块和标准库包时,直接从全局环境Lib调取,需要第三方依赖包时,只能从自己虚拟环境的Libsite-packages内调取,不能调取全局环境Libsite-packages中的第三方包

  4. 不同虚拟环境的项目之间,不能引用对方虚拟环境Libsite-packages下的第三方依赖包

  5. 全局环境项目也不能调取某个项目虚拟环境Libsite-packages下的第三方依赖包

4.在IDE中使用全局环境和虚拟环境

以最好用的Python IDE:PyCharm为例

新建项目时,默认会选中创建虚拟环境下的解释器

虚拟环境下,IDE会自动创建虚拟环境:.venv,终端打开时IDE也会自动为我们切换到虚拟环境的命令行下,安装的包也自动保存到项目虚拟环境下

如只用全局环境,则选择已有的自定义环境,并保证python是安装时的安装目录中的解释器即可

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

招商网站建设江津网站建设

Wasm3作为目前最通用的WebAssembly运行时,以其极致的轻量化设计和无与伦比的跨平台兼容性,正在重新定义现代应用开发的技术边界。这个快速WebAssembly解释

2026/06/30 13:41:37

机票网站建设商业网站建设案例课程

FPGA实现多功能ALU:从加减法到逻辑运算的硬件构建之路你有没有想过,计算机到底是怎么“算数”的?我们每天都在用手机、电脑做计算——加减乘除、判断真假、处理

2026/06/30 12:00:28

深圳网站建设公司移动网站建设

目录JVM内存结构JVM内存结构中哪些是线程私有的? 哪些是内存共享的JVM内存模型里的堆和栈有什么区别内存泄漏和内存溢出有什么不同JVM内存结构jdk1.6中,方法区的实现是永久代, 而永久代是在堆

2026/06/30 12:44:03

黄浦网站建设甘肃省建设厅网站

还在为无法离线观看B站优质内容而烦恼吗?bilidown作为专业的哔哩哔哩视频解析下载工具,完美解决了用户对高清视频保存的需求。这款开源工具支持8K超清视频、Hi-Res无

2026/06/30 12:21:00

湖州网站建设网站企业建设

网盘直链下载助手推荐:方便分发HeyGem生成的大体积视频文件在AI内容创作日益普及的今天,数字人视频正快速渗透进企业宣传、在线教育、短视频运营等多个领域。像HeyGem这

2026/06/30 12:32:02

上海门户网站建设恩施网站建设

还在为做PPT熬夜加班?这些工具能让你事半功倍。又到了月底汇报的时候,看着电脑屏幕上杂乱无章的文档和空白PPT,小张叹了口气。内容其实早就准备好了࿰

2026/06/30 13:46:07

永州网站建设海淀网站建设

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。概述数据可视化模块用于展示应用的数据。在Cordova与OpenHarmony混合开发框架下,这个模块提供

2026/06/30 10:36:21

网站建设规划书吉林网站建设

软件测试失败的价值与自愈系统的崛起在软件测试领域,失败并非终点,而是进步的催化剂。每一次测试用例的崩溃、缺陷报告的涌入或回归测试的失误,都蕴含着宝贵的洞见。随

2026/06/30 12:44:33

长春网站建设公司网站建设发展

背景及意义随着信息技术在教育领域的深度融合,传统体测管理模式的技术短板日益凸显。采用Java语言、SpringBoot框架及MySQL数据库开发的学生身体素质测评管理系统,

2026/06/30 12:37:02

桂林网站建设网站建设教程

🔥 开篇周五的傍晚,窗外的晚霞烧得正旺,但我没心思欣赏。因为运维胖哥刚刚在群里发了一张服务器磁盘报警的截图,那鲜红的92%看得我心惊肉跳。“豆

2026/06/30 12:18:00