首页 > Python资料 博客日记
一文弄懂Python环境
2024-11-02 20:00:07Python资料围观6次
一文弄懂Python环境
相信很多刚接触Python或者想入门机器学习、深度学习的朋友,都被Python五花八门的环境配置和杂七杂八的外部依赖库所困扰,本文致力于从根本上理清Python环境的原理,相信各位在阅读后能对Python环境有新的认识,并在大型代码环境配置中更加得心应手。
一. 什么是Python环境?
Python的环境总体上可以分为全局环境和虚拟环境,但是二者的本质没有区别,他们都是一个文件夹。为什么说是一个文件夹呢?
所谓的环境,根本上由两部分组成:基本的Python解释器, 代码所需要的第三方库。而这两部分,实际上都被放在了同一个文件夹里,所以包括这两部分的完整的文件夹,实际上就是一个Python运行的环境。
而全局环境和虚拟环境的根本区别,实际上是这个文件夹的路径,有没有被添加至电脑的环境变量之中,如果该文件夹路径被添加到了环境变量中,那么就成了全局环境,否则就是虚拟环境。(环境变量的意义,就是电脑在执行命令行或脚本语句:如pip时,会先去寻找环境变量所代表的路径下的文件,现在不理解也没关系~~)。
现在让我们先看一下全局环境在文件夹中的具体内容,然后告诉各位几个常用文件夹的作用。
如图所示,
- python.exe就是我们的python执行脚本,即我们在终端输入python时,他就会执行这个程序(因为这个文件夹的路径以及被添加至环境变量中了)
- 另一个很重要的文件夹是Lib文件夹下的site-packages文件夹,里面就包含了我们安装的所有第三方库,也就是说你pip的下来的库一般都会在site-packages中能看到。
- Scripts文件夹也十分重要,因为Scripts里面有pip.exe可执行文件,他就是我们在终端输入pip后,最终会执行的文件。除此之外,也有其他有用的可执行文件,大家可自行查阅。
二. 为什么会有环境污染
在我看来,环境污染主要分为两方面:
- 终端输入python xxx.py 或者 pip install xxx后,无法执行正确的python命令和pip命令。
- 在某环境中,安装了版本不匹配的第三方库,导致运行时报错。
造成原因:
- 全局环境有多个,单纯输入python时,系统不知道具体要调用哪个环境下的python脚本,因此使用了错误的环境去执行代码,或者pip将第三方库下载到了错误的环境当中。
- 全局环境中第三方库凌乱,如在一次开发中将一些包如numpy安装到了全局环境中,然后第二次开发又需要这些包如numpy的不同版本,造成版本混乱,运行报错。
解决方法:
- 在执行python命令时,不要单纯输入python,把环境所在的文件夹路径也加上,实机上vscode在运行python程序时就是这么干的。如图蓝色的就是我的要执行的环境中python.exe的位置。后面是要运行的py代码位置。
- 在Lib下的site-package文件夹检查各第三方库的版本,删除旧版本,再重装新版本。
好了,我们可以看到当项目越来越多,使用的包越来越多时,如果全放在全局环境就很难搞了,运行起来麻烦且不好管理,因此对于较大的python项目,一般一定是要使用虚拟环境,而全局环境适合安装一些常用的第三方库,方便日常写简单代码使用。
三. 虚拟环境登场
虚拟环境的作用在于,你的所有第三方库都会被安装在这个虚拟环境所指带的文件夹下面,然后当执行该环境中的python命令时,他也只会在该文件夹下去搜寻所需的第三方库,非常好的避免了各库之间的污染。
可以通过两种方式创建虚拟环境,第一种是python自带的虚拟环境管理工具Venv,而另一种则是网上一堆人使用的Conda。
- Venv轻量: 作者认为对于第三方库不多的项目用Venv就够了,因为他是在你的项目文件夹中直接创建一个.venv文件夹,这就相当于你的虚拟环境了,里面所有的第三方库都会下载到这个文件夹里,而且pip和python命令也可以直接从这个文件夹里的Scripts文件夹下调用。但需要注意一点,创建Venv的前提是你电脑要先有基本的python解释器,Venv是在你电脑上的Python解释器基础上创建的,对于第三方库进行管理的虚拟环境。
- Conda大型 :而对于一些大型或者开源的深度学习项目如LLM、YOLOv8等,则推荐使用conda了,conda的虚拟环境会从头开始帮你安装选定版本的Python解释器(跟你电脑之前下载的python解释器就无关了),然后你通过调用这个环境的pip,之后的第三方库都会下载到这个conda环境中,也就是一个.conda文件夹中。但是使用conda的时候要小心,特别是这个命令
conda env -n env_name
,如果你无脑使用,那么这个虚拟环境很可能被安装在了C盘,并且导致后续的超大第三方库如Pytorch会逐渐让你的C盘爆炸。
下面以vscode为例,演示一下venv的使用:
-
在一个Python项目文件夹中,打开其中一个py文件,点击右下角这个
-
调用出这个,这里就是给你选择环境的如果不想创建虚拟环境,可以直接从这里面选。
- 如果要创建虚拟环境,点击+ create Virtual Environment ,调用出这个,然后选择venv,后面再选择一个python的解释器版本即可创建成功。 -
注意,vscode有时候会出bug,即使你选择了虚拟环境但是如果你直接在终端输入python xx.py,他还是有可能去调用全局环境(所以建议在运行前,在终端输入
python --version
检查一下版本对不对),为了避免这种情况发生,一种方式是用vscode右上角的运行python文件按钮执行文件,或者直接调用环境中的python脚本.venv/Scripts/python xxx.py
(一定要先将终端cd当前项目文件夹下,不然就输入绝对路径,太麻烦,pip同理)。 -
如果要安装conda环境,也可以采用相同的方式(前面选择创建conda虚拟环境即可),安装后会有一个.conda文件夹,里面就是你的conda虚拟环境,但是他比较大,因为python解释器也包括在里面了。
四. 正确使用Conda
如果你打算使用conda创建虚拟环境,那么我建议你不要盲目复制网上的anaconda命令语句, 在创建虚拟环境之前,请先明确以下这一点,非常重要:你的虚拟环境最终会创建到哪个路径之下(强烈不建议装在C盘)。
以下是具体的准备工作:
-
先查看conda里有哪些虚拟环境,并且看看他们在哪个文件夹下。
-
下一步,假设还没有这个llm虚拟环境,然后我们要在D盘Project文件夹下创建这个虚拟环境,我们就使用如下命令,其中python的版本视情况而定:
conda create --prefix=D:\Project\llm python=3.9
-
这个时候,llm环境其实已经创建好了,但是他的名称比较长,每次activate的时候麻烦,所以我们要给他设置别名:
conda config --append envs_dirs D:\Project
之后就可以直接activate llm来激活这个虚拟环境了。详细可以参考这篇博文:链接: conda在D盘创建虚拟环境。
五. 总结
总而言之,我们要弄清楚,任何环境实际上就是一个文件夹,里面包括了所需的python解释器和第三方库,我们的python命令和pip命令实际上就是执行相应文件夹下的python.exe文件和pip.exe文件,有时候如果执行了错误文件夹下的相应文件,就会造成第三方库寻找不到的情况。
因此,当你在终端直接输入pip install时,请三思而后行,确保知道你是否执行了所需环境中的pip.exe文件,否则你的第三方库将被安装到错误的环境当中。那么在运行代码时等待你的就是"cannot import module xxxx" 。
标签:
相关文章
最新发布
- Python向Excel写入内容的方法大全
- Python 潮流周刊#75:用 Python 开发 NoSQL 数据库(摘要)
- 一文弄懂Python环境
- Python酷库之旅-第三方库Pandas(181)
- wandb 网络连接问题解决指南--wandb: Network error (SSLError), entering retry loop.
- [python]Gunicorn加持下的Flask性能测试
- 对称加密算法——DES算法(包含Python、C、Java语言代码实现)
- 【华为OD技术面试手撕真题】74、缺失的第一个正数 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)(0ms)
- 使用wxpython开发跨平台桌面应用,对常用消息对话框的封装处理
- Python毕业设计选题:基于python推荐算法的电影推荐系统设计与实现
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj