学习视频:安装不算完事,只有理解了虚拟环境才算真正掌握 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即刻一键安装该项目所需要的包