Python虚拟环境

news2024/11/20 2:39:48

学习视频:安装不算完事,只有理解了虚拟环境才算真正掌握 Python 环境

同类笔记:Python虚拟环境

目录

一、什么是虚拟环境

二、虚拟环境相关工具的使用和原理

创建虚拟环境

虚拟环境目录分析

虚拟环境的激活

虚拟环境做了什么

退出虚拟环境

三、虚拟环境的必要性

四、pycharm中的虚拟环境

五、保存和复制虚拟环境


一、什么是虚拟环境

有虚拟环境,那么对应的就有实际的环境,什么是实际的环境呢?

以python3.8为例

解释:
site-pakages目录下是python的第三方包,也就是通过pip install下载那些包

标准库存放python的一些原生库

Scripts下存放可执行文件,pip.exe

python.exe就是python的解释器

虚拟环境其实相当于是实际环境的副本,虚拟环境直接使用实际环境的标准库,所以在虚拟环境中并不会存放标准库,并且虚拟环境将python.exe放在了Scripts文件下。

二、虚拟环境相关工具的使用和原理

python自带一个虚拟环境,叫venv

 在终端中,输入python -m venv -h查看venv工具的用法

创建虚拟环境

指令:python -m venv 安装路径

C:\Users\yonuy>python -m venv venvdemo

虚拟环境目录分析

我们直接cd进目录终端中的指令cd,全称是“Change Directory”,中文意思为,跳转目录,用来实现路径的转换

C:\Users\yonuy>cd venvdemo

然后我们列出目录,使用指令dir,是"Directory"的缩写,在Linux中也可以使用该指令

拓展:cmd命令和linux命令的区别

C:\Users\yonuy\venvdemo>dir
 驱动器 C 中的卷是 Windows-SSD
 卷的序列号是 0444-83BC

 C:\Users\yonuy\venvdemo 的目录

2023/01/08  19:02    <DIR>          .
2023/01/08  19:02    <DIR>          ..
2023/01/08  19:02    <DIR>          Include
2023/01/08  19:02    <DIR>          Lib
2023/01/08  19:02                90 pyvenv.cfg
2023/01/08  19:02    <DIR>          Scripts
               1 个文件             90 字节
               5 个目录 75,817,521,152 可用字节

C:\Users\yonuy\venvdemo>

解释:Include一般是空的,很少去关注它,Lib是工具包,cfg配置文件,Scripts是可执行文件

我们进入Lib看一下

C:\Users\yonuy\venvdemo>cd Lib
C:\Users\yonuy\venvdemo\Lib>dir
 驱动器 C 中的卷是 Windows-SSD
 卷的序列号是 0444-83BC

 C:\Users\yonuy\venvdemo\Lib 的目录

2023/01/08  19:02    <DIR>          .
2023/01/08  19:02    <DIR>          ..
2023/01/08  19:02    <DIR>          site-packages
               0 个文件              0 字节
               3 个目录 75,811,418,112 可用字节

C:\Users\yonuy\venvdemo\Lib>

我们发现Lib中只有site-packages,而没有标准库

再进入site-packages看一下

C:\Users\yonuy\venvdemo\Lib>cd site-packages

C:\Users\yonuy\venvdemo\Lib\site-packages>dir
C:\Users\yonuy\venvdemo\Lib\site-packages>dir
 驱动器 C 中的卷是 Windows-SSD
 卷的序列号是 0444-83BC

 C:\Users\yonuy\venvdemo\Lib\site-packages 的目录

2023/01/08  19:02    <DIR>          .
2023/01/08  19:02    <DIR>          ..
2023/01/08  19:02               152 distutils-precedence.pth
2023/01/08  19:02    <DIR>          pip
2023/01/08  19:02    <DIR>          pip-22.0.4.dist-info
2023/01/08  19:02    <DIR>          pkg_resources
2023/01/08  19:02    <DIR>          setuptools
2023/01/08  19:02    <DIR>          setuptools-56.0.0.dist-info
2023/01/08  19:02    <DIR>          _distutils_hack
               1 个文件            152 字节
               8 个目录 75,807,272,960 可用字节

C:\Users\yonuy\venvdemo\Lib\site-packages>

里面比较纯净,只有少量类似pip的包

再进入Scripts看一下

cmd中返回上一层目录的指令是cd ..

C:\Users\yonuy\venvdemo\Lib\site-packages>cd ..

C:\Users\yonuy\venvdemo\Lib>cd ..

C:\Users\yonuy\venvdemo>cd Scripts

C:\Users\yonuy\venvdemo\Scripts>dir
 驱动器 C 中的卷是 Windows-SSD
 卷的序列号是 0444-83BC

 C:\Users\yonuy\venvdemo\Scripts 的目录

2023/01/08  19:02    <DIR>          .
2023/01/08  19:02    <DIR>          ..
2023/01/08  19:02             2,194 activate
2023/01/08  19:02               964 activate.bat
2023/01/08  19:02             8,834 Activate.ps1
2023/01/08  19:02               368 deactivate.bat
2023/01/08  19:02           106,353 pip.exe
2023/01/08  19:02           106,353 pip3.8.exe
2023/01/08  19:02           106,353 pip3.exe
2023/01/08  19:02           519,168 python.exe
2023/01/08  19:02           518,144 pythonw.exe
               9 个文件      1,368,731 字节
               2 个目录 75,813,289,984 可用字节

C:\Users\yonuy\venvdemo\Scripts>

里面除了pip.exe和python.exe,还多了一些东西——avtivate(激活)和deactivate(去激活)

 拓展:cmd和powershell的区别(有兴趣可以自己去了解一下)

虚拟环境的激活

虚拟环境创建后,需要手动激活才能将当先的Python环境从系统默认环境切换到虚拟环境中

C:\Users\yonuy\venvdemo\Scripts>activate

出现了一个新的命令窗口

我们发现虚拟环境的名称会作为前缀出现在命令提示符的最前方,表示用户当前是在这个环境下进行操作的。

拓展:激活虚拟环境的其他方法,source activate 虚拟环境名字

查看当前环境内的第三方库

(venvdemo) C:\Users\yonuy\venvdemo\Scripts>pip list
Package    Version
---------- -------
pip        22.0.4
setuptools 56.0.0
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1131)'))) - skipping

(venvdemo) C:\Users\yonuy\venvdemo\Scripts>

虚拟环境做了什么

激活虚拟环境其实就是在环境变量PATH的前面插入了虚拟环境的路径

在环境变量中,谁先被找到就先使用谁,所以激活虚拟环境后,该环境会被优先使用

退出虚拟环境

(venvdemo) C:\Users\yonuy\venvdemo\Scripts>deactivate

三、虚拟环境的必要性

解释1:如果一个环境要做很多任务就要安装很多第三方包,第三方包与包之间有时候会出现版本不兼容,从而导致不可用;而且包一多就很难管理一个环境。如果我们将每个任务限定在虚拟环境中操作,只安装这个任务需要的包,那么会大大减少不兼容问题的发生几率。

解释2:可以直接通过虚拟环境来配置别人项目的运行环境,从而可以运行别人的代码。

四、pycharm中的虚拟环境

 在pycharm中新建项目时,你可以选择在此时新建一个环境,也可以选择使用已有的环境

五、保存和复制虚拟环境

使用pip freeze指令将虚拟环境的库冻结(总结)后,记录在requirements.txt里面,并存放在Scripts目录下,方便其他人来安装使用某项目的库

(venvdemo) C:\Users\yonuy\venvdemo\Scripts>pip freeze > requirements.txt

其他人只需要通过pip install -r requirements.txt即刻一键安装该项目所需要的包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文精读】360MVSNet

今天读的是发表在WACV2023上的MVS文章&#xff0c;该文章提出了基于全景相机的MVS pipeline。 文章链接&#xff1a;点击前往 代码链接&#xff1a;暂未开源。 文章目录Abstract1. Introduction2. Related works3. Method3.1 Feature Extraction3.2 360 Spherical Sweeping3.2.…

【经典笔试题2】

test1 test2 test3 test4 test5 test1 int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; } 程序的结果是什么&#xff1f;首先分析代码&#xff0c;a是数组名&#xff0c;是数组首元素…

详解Web服务器与http https协议工作过程

Web服务器 URL URI URL是URI的一个子集 www www所用的协议 http请求报文分析 状态码&#xff08;空行&#xff1a;最后一 个响应头部之后是一个空行&#xff0c;发送回车符和换行符&#xff0c;通知服务器以下不再有响应头部。&#xff09; 网址解析 网址注释实例 HTT…

从工厂方法到注解的小例子

目录一、背景介绍二、思路&方案三、过程过程图一过程图二过程图三过程图四(运行时的图)代码四、总结五、升华一、背景介绍 上篇"自定义注解和注解解析器",通过小例子介绍了自定义注解的运用&#xff1b;本篇继续基于小例子来实现工厂方法&#xff0c;以及注解实…

linux Regmap API

1.针对 I2C 和 SPI 设备寄存器的操作都是通过相关的 API 函数进行操作的。这样 Linux 内核中就会充斥着大量的重复、冗余代码&#xff0c;但是这些本质上都是对寄存器的操作&#xff0c;所以为了方便内核开发人员统一访问I2C/SPI 设备的时候&#xff0c;为此引入了 Regmap 子系…

如何用智能地教狗狗上厕所

背景 22年养了一只很可爱的小狗狗&#xff0c;我其实就一个问题&#xff1a;为啥这么可爱的狗狗会拉屎撒尿呀&#xff1f; 自从崽崽来了我们家之后&#xff0c;最让我们头疼的就是它乱拉、乱尿的问题了&#xff0c;以前会在家里到处乱来&#xff0c;最近一段时间好了很多&…

机器学习(整体结构)

国科大《机器学习》内容&#xff0c;周晓飞老师讲的挺不错的&#xff0c;浅显易懂。 本来是想整理下课程内容的&#xff0c;然而动手后才发现内容过多&#xff08;很想吐槽&#xff0c;为啥这么多模型&#xff1f;不能相互替代么&#xff1f;&#xff09;简略画个思维导图算啦…

探索SpringMVC-HandlerAdapter之RequestMappingHandlerAdapter-返回值处理

前言 上回我们回答了ReqeustMappingHandlerAdapter调用目标方法的参数解析问题&#xff0c;今天我们再来回答第二个问题&#xff1a;怎么处理方法调用的返回值。 深入分析返回值处理需求 RequestMapping处理器的返回值类型 相信很多同学对于这个返回值的第一个反应就是返回一…

图解JDK1.7中HashMap头插法扩容造成的死循环问题

JDK1.7中HashMap头插法扩容造成的死循环问题 文章目录JDK1.7中HashMap头插法扩容造成的死循环问题一、背景二、源码解读三、图解单线程环境中扩容多线程环境中扩容四.总结一、背景 HashMap是线程不安全的&#xff0c;在并发使用HashMap时很容易出现一些问题&#xff0c;其中最…

ArcGIS基础实验操作100例--实验66符号图层的保存与加载

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验66 符号图层的保存与加载 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

【OpenGL】基础光照

介绍 现实世界中的光照是极其复杂&#xff0c;难以计算的&#xff0c;因此OpenGL的光照使用的是简化的模型&#xff0c;其中一个模型被称为冯氏光照模型(Phong Lighting Model)。 冯氏光照模型的主要结构由三个分量组成&#xff1a; 环境(Ambient)光照漫反射(Diffuse)光照镜…

blender学习笔记2023.01.05

文章目录why基操why 想画条大黄鱼 想画一下渔网 网箱 写笔记预防忘记 基操 1.语言改为中文 不过后续可能改回英文去 2.顶部导航栏—编辑—偏好设置—界面—翻译—&#xff08;关掉&#xff09;新建数据 目的是预防插件导致奇奇怪怪的报错 这里左下角位置处点击 保存修改 3…

初识LCD1602及编程实现字符显示

一、LCD1602基础知识及接线方法LCD1602是一种工业字符型液晶&#xff0c;能够同时显示16x02即32字符&#xff08;16列两行&#xff09;引脚说明第 1 脚: VSS 为电源地 第 2 脚: VDD 接 5V 正电源 第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱&#xff0c;接地时…

【Neo4j构建知识图谱】:官方服务图谱大型数据集下载与可视化方法【数据集包括:食谱数据、足球、权力的游戏、美国宇航局、英国公司注册、财产所有权、政治捐款】

目录 1、服务端口免费查看知识图谱2、关于 Neo4j 示例数据集的实现3、下载离线数据集4、项目概览与实现案例还可以看到解析python源码还可以看到解析cypher源码各种数据集实现案例参考1、服务端口免费查看知识图谱 此服务器托管许多具有只读访问权限的数据集,供公众使用。 该…

2022尚硅谷SSM框架跟学(三)MyBatis基础三

2022尚硅谷SSM框架跟学 三 MyBatis基础三9.动态SQL9.1if9.2where方法一:加入恒成立的条件方法二:使用where标签9.3trim9.4choose、when、otherwise9.5foreach9.51批量添加9.52批量删除批量删除方式1批量删除方式2批量删除方式39.6SQL片段10.MyBatis的缓存10.1MyBatis的一级缓存…

JS基础(一)——认识JS及其基础语法

网页的三个组成部分 HTML&#xff1a;用于控制网页的内容CSS&#xff1a;用于控制网页的样式JavaScript&#xff1a;用于控制网页的行为 网页的行为指用户与浏览器的行为交互、浏览器与浏览器与服务器的数据交互。 ECMAScriptS&#xff08;ES&#xff09; ECMAScriptS是Java…

OpenCV入门

OpenCV入门图像金字塔高斯金字塔(cv2.pyrUp、cv.pyrDown)拉普拉斯金字塔边缘检测图像轮廓 (cv2.findContours)轮廓特征&#xff08;cv2.contourArea、cv2.arcLength&#xff09;轮廓近似(cv2.approxPolyDP)边界矩形、外接圆(cv2.boundingRect、cv2.minEnclosingCircle)模板匹配…

C库函数:time.h

time.h C 标准库 – <time.h> | 菜鸟教程 (runoob.com) 库变量 下面是头文件 time.h 中定义的变量类型&#xff1a; 序号变量 & 描述1size_t 是无符号整数类型&#xff0c;它是 sizeof 关键字的结果。2clock_t 这是一个适合存储处理器时间的类型。3time_t is 这是一…

C库函数:math.h

math.h C 标准库 – <math.h> | 菜鸟教程 (runoob.com) 16double pow(double x, double y) 返回 x 的 y 次幂。17double sqrt(double x) 返回 x 的平方根。18double ceil(double x) 返回大于或等于 x 的最小的整数值。19double fabs(double x) 返回 x 的绝对值。20doubl…

矩阵分析:QR分解

Householder变换 Householder变换是一种简洁而有意思的线性变换&#xff0c;也可称为镜面反射变换&#xff0c;Householder变换矩阵为HI−wTwHI-w^TwHI−wTw 考虑向量α\alphaα和一个单位向量w:wTw1w:w^{T}w1w:wTw1 α\alphaα在www 方向上的分量是 αw//(wTα)wwwTα\alpha _…