首页 > 编程语言 >Python虚拟环境介绍

Python虚拟环境介绍

时间:2024-08-28 16:37:17浏览次数:11  
标签:exe Python 创建 介绍 python 虚拟环境 pip

本篇是 Python 系列教程第 4 篇,更多内容敬请访问我的 Python 合集

1 什么是虚拟环境

Python的虚拟环境一般存在于项目的根目录,其作用其实和Vue项目的node_modules文件夹差不多,存放一些本项目的依赖包。与node_modules不同的是node_modules只是用来存放外部依赖包,而Python虚拟环境还存放了可执行文件和Python解释器(即python.exe)。

在了解虚拟环境之前,我们先来了解一下真实环境,Python真实环境包含以下内容

  • Lib:一些包

    • site-packages:安装的外部包
    • 标准库:Python预装的模块和包
  • Script:可执行文件,如pip.exe

  • python.exe:python解释器

虚拟环境可以理解为把真实环境复制了一份,供项目单独使用。但是复制会有一个问题,就是标准库是非常大的,把标准库复制到虚拟环境里是很不划算的。

所以虚拟环境和真实环境的第一个区别点就是不包含但引用标准库。第二个区别点是虚拟环境把python.exe也放到了Scripts目录下。

项目的虚拟环境目录结构如图:

如下图,这个是我项目的虚拟环境

2 如何创建和激活

2.1 开发工具创建

PyCharm在创建项目的时候会自动创建虚拟环境,如下图

在创建的项目里打开控制台可以发现路径前面多了一个虚拟环境目录名,如下图

这样就代表虚拟环境已经被自动激活了。这时使用pip安装外部包就会安装到本虚拟环境的site-packages目录下而不是Python安装目录下。

2.2 命令行创建

我们新建一个文件夹demo2然后用PyCharm打开,这时是没有虚拟环境的,我们来创建一个虚拟环境,注意不要和demo1的虚拟环境重名,不然会导致意想不到的bug。

创建虚拟环境的命令(这里使用的是venv工具),最后一个单词是虚拟环境名称

 python -m venv .venv

创建好后的结构如下图

每次打开一个新控制台都需手动执行activate进行激活(PyCharm自动创建的虚拟环境就不需要手动激活),激活成功后可以看到路径前有虚拟环境标识了。如下图

接下来在此控制台输入的所有命令都是在虚拟环境进行的了。

如果不想每次打开控制台都手动激活,可以在setting里改配置,如下图

2.3 虚拟环境都做了些什么

其实虚拟环境并没有做什么高大上的操作,它只是把我们的环境变量改了一下。我们可以在虚拟环境中和普通的控制台分别把环境变量打印出来看看

可以看到虚拟环境在环境变量前多加了一串虚拟环境的可执行文件的路径D:\PycharmProjects\demo2\.venv\Scripts;,这也就解释了为啥虚拟环境在复制的时候把python.exe放到Scripts目录下了,因为方便环境变量配置。

由于环境变量是顺序优先,所以虚拟环境就成功生效了。

1和2 小结:

所以,简单来说,虚拟环境就是把python.exe、pip.exe等可执行文件复制了一份自己使用,并且在激活的时候更改本控制台的环境变量让pip install的包都安装到虚拟环境自己的site-packages目录下。

3 如何复制虚拟环境

当我们开发好一个程序,想让别人也使用,最好让第二个人得到一个跟我一模一样的虚拟环境。该怎么整呢?

其实复制虚拟环境用到了pip的命令

pip freeze > requirements.txt

这样另一个人就可以用这个requirements.txt安装相同的依赖包了,注意要事先创建虚拟环境并激活

pip install -r .\requirements.txt

如下图,我先把demo2的.venv文件给删了,然后执行命令上述命令安装demo1的依赖包

标签:exe,Python,创建,介绍,python,虚拟环境,pip
From: https://www.cnblogs.com/GilbertDu/p/18385047

相关文章

  • Python变量
    本篇是Python系列教程第5篇,更多内容敬请访问我的Python合集1定义变量在Python中定义变量非常简单,你只需要给变量赋值即可。Python会自动检测变量的数据类型。下面是一些基本的例子来展示如何定义不同类型的变量:1.1整数age=251.2浮点数height=1.751.3字符......
  • 用Python爬取地图信息被捕了?Python主要有哪些用途:Web开发、数据科学和人工智能、科学
    近日,一起关于导航电子地图“拥堵延时指数”数据权益的不正当竞争纠纷案在北京市朝阳区人民法院落下帷幕,引发热议。 爬虫确实是学习Python最有意思的一件事情,也是Python很擅长的事情之一。很多铁铁日常使用Python爬天爬地,也还有很多想学爬虫来自动获取数据。如果你正在学习......
  • 安装Python
    本文是Python系列教程第1篇,更多内容敬请访问我的Python合集说不定之前安装过,查看已安装Python版本命令python-V卸载旧版Python直接在应用管理里把所有Python相关的都卸载即可安装最新版Python官网https://www.python.org/downloads/若是下载比较慢,没条件开代理......
  • Python开发工具:PyCharm
    本文是Python系列教程第2篇,更多内容敬请访问我的Python合集1安装官网下载地址https://www.jetbrains.com.cn/pycharm/,文件比较大(约861MB)请耐心等待双击exe安装安装成功后会有一个30天的试用期,激活教程见先插个眼,有空更新激活教程2创建第一个项目图中这句话的意思......
  • 自我介绍+软工5问
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业的目标<注册与使用Github,创建自己的博客,自我介绍,对课程了解>自我介绍大家好我叫木萨江·米吉提来自新疆......
  • 自我介绍&软工5问
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13228这个作业的目标创建自己的博客和github账号,养成写博客的好习惯,了解程序员的工作的方式,熟悉markdown......
  • python获取目录下的所有文件、子目录
    1.相对路径importossource_path=r'你的目录'forroot,dirs,filesinos.walk(source_path):print('当前目录为:',root)print('当前目录下的子目录为:')fordirnameindirs:print(dirname)print(&......
  • Python创建字典与fromkeys的坑
    字典很重要字典dict是Python中很重要的一个数据类型,通过键值映射,能够很好的定位查找.Django,Flask这些Web框架在做前后端分离时,就是用字典传数据的,因为它和列表list配合起来,能够很好的与json格式的数据相互转化.用Flask+Echarts做数据可视化大屏,传的变量都是......
  • Python 判断质数的另一种方法
    质数就是大于等于2且只能被它本身及1整除的数,百度上关于质数的性质和相关的公式还有很多,不过有点高深难懂,尤其是对我这个数学不好的人来说。网上python判断质数的方法大多是下面这种:frommathimportsqrtdefis_prime(n):ifn==1: print("此数为不质数")......
  • Python中几种lambda排序方法
    1.对单个变量进行排序#lst=[[5,8],[5,3],[3,1]]lst.sort(key=lambdax:x[1])#lst=[[3,1],[5,8],[5,3]]以元素的第二个元素升序排列2.对多个变量进行排序#lst=[[5,8],[5,3],[3,1]]lst.sort(key=lambdax:(x[1],x[0]))#lst=[[3,1],[5,3],[5,8]]以元素的......