Python | 虚拟环境01 - 什么是虚拟环境、它的由来

ops/2024/12/19 17:46:05/

导言


在这里插入图片描述
python3真的不是安装了就完事,必须理解虚拟环境是什么才算是初步掌握python环境。
学习python3虚拟环境,建议参考B站教程。这位博主用了6个视频,每一个视频仅仅几分钟。居然把python3的虚拟环境讲明白了。

虚拟环境(Virtual Environment)是Python中的一个独立的、隔离的Python运行环境。它就像是在您的计算机上创建了一个"小房间",这个房间里有:
独立的Python解释器(python.exe)
独立的包管理系统(pip.exe)
独立的依赖库(site-packages)



python_13">一、MacOS下的python虚拟环境


最近开始启动Qt6 Pyside6 + QML开发应用程序。通过Qt开发环境,跟着视频学习python虚拟环境。

1.1、虚拟环境的结构

在这里插入图片描述
如上图所示,在MacOS,Qt6的python虚拟环境的目录结构发生了变化,Scripts文件夹被替换成bin文件夹。接着,多了一个文件pyvenv.cfg与include文件夹。
在这里插入图片描述
如上图所示,使用Qt_Creator创建的一个Qt6的QML + Pyside6项目,项目名paho_mqtt。虚拟环境目录下包含:

  1. bin/
  2. include/
  3. lib/
  4. pyvenv.cfg


二、为什么需要虚拟环境?


2.1. 项目隔离

  • 不同项目可能需要同一个包的不同版本
  • 例如:项目A需要Django 2.2,项目B需要Django 3.0
  • 虚拟环境让每个项目都有自己的"小房间",互不影响

2.2 依赖管理

  • 方便管理每个项目的依赖包
  • 可以轻松导出项目依赖列表(requirements.txt)
  • 在其他环境快速重建相同的开发环境

2.3. 避免冲突

  • 防止全局环境被污染
  • 避免不同项目之间的包版本冲突
  • 保持系统Python环境的清洁

2.4. 项目部署

  • 便于确定项目的真实依赖
  • 方便在不同机器上部署项目
  • 提高项目的可移植性

2.5.实际应用场景

假设您正在同时开发两个项目:

  1. 一个旧项目使用Python 3.7和Django 2.2
  2. 一个新项目使用Python 3.9和Django 3.2

http://www.ppmy.cn/ops/143238.html

相关文章

SEO初学者-SEO基础

SEO 基础SEO 初期设置SEO怎么做如何跟踪 SEO 效果免费的 SEO 工具 如果您希望人们通过 Google 找到您的网站,您需要了解 SEO 的基础知识。这些知识比您想象的要简单。 什么是 SEO? 搜索引擎优化 (SEO) 是增加网站自然搜索流量的过程。在这一过程中&am…

深入探究 Redis 集群:主从复制实现原理

主服务器可以进行读写操作&#xff0c;当发生写操作时自动将写操作同步给从服务器&#xff0c;而从服务器一般是只读&#xff0c;并接受主服务器同步过来写操作命令&#xff0c;然后执行这条命令。 通过再B服务器上执行replicaof <服务器 A 的 IP 地址> <服务器 A 的 …

解锁CSS新维度:预处理器之LessSass

在现代前端开发中&#xff0c;CSS&#xff08;层叠样式表&#xff09;是用于控制网页外观的主要技术。然而&#xff0c;随着项目的复杂度增加&#xff0c;传统的CSS编写方式逐渐显现出其局限性&#xff0c;如变量复用、嵌套规则、模块化管理等需求难以满足。为此&#xff0c;出…

【错误收集】tomcat资源访问404

在使用tomcat的时候&#xff0c;tomcat 能够正常访问&#xff0c;index.html也能正常访问。报错界面&#xff1a; 但是只有WebServlet的资源无法访问&#xff0c;原因是&#xff1a;servlet的版本太高。 改正后的maven: <?xml version"1.0" encoding"UTF-…

[ClickHouse 运维系列] 数据 TTL 学习笔记整理

一、clickhouse TTL ClickHouse的MergeTree引擎支持数据生命周期管理&#xff0c;即TTL&#xff08;Time To Live&#xff09;。TTL可以通过设置列字段或整张表的过期时间来实现。列字段的TTL会在时间到期时删除该列数据&#xff0c;而表级别的TTL会删除整张表的数据。如果同…

Java——网络编程(中)—TCP通讯(下)

1 双向通讯—创建服务端 (双向通信是指通信双方中&#xff0c;任何一方都可为发送端&#xff0c;任何一方都可为接收端) (1 创建ServerSocket对象&#xff0c;accept()返回socket) (2 双向通讯——>也要创建键盘输入对象) (3 通过与客户端对应的Socket对象获取输入流对象…

MySQL索引事务

1.索引 索引的作用类似书籍目录,可以用于快速定位,检索数据 可以对数据库表的某列或者某几列创建索引 索引针对查询操作引入的优化手段,但生成索引也会占用更多的空间 对于插入/删除/修改频率高的表不适用索引 使用场景 数据量大,经常对这些列进行条件查询 2.查看/创建/…

Jsckson @JsonValue 注解

概述 Jackson 是一个常用的 Java 库&#xff0c;用于将 Java 对象转换为 JSON 表示形式&#xff0c;并可以反向操作。有时&#xff0c;我们需要以自定义的方式序列化 Java 对象。Jackson 的JsonValue 注解通过允许使用单个方法的返回值作为对象的序列化表示来实现这一点。 Jso…