赞
踩
从网上搜集的资料整理的,如有错误,敬请指正。
首先我做了如下这个图,大致解释了各个选项及其之后的分支都是什么意思,详细部分请看下文
是一个程序,将python代码转换为计算机能理解的机器语言,使得计算机能够运行这些代码
在系统中安装python后,python解释器的路径如下: "E:\software\code software\python\pythonSetup\python.exe"(划下划线的部分每个人的安装路径不同)
该python解释器对应的全局软件包的文件夹的路径为:
"E:\software\code software\python\pythonSetup\Lib\site-packages" 里面存放了系统python所安装的一些包。
此时的python解释器是系统解释器,因为直接安装在系统中,如果为项目创建了虚拟环境后,虚拟环境中也存在解释器。比如项目“chipnetwork”中虚拟环境的解释器路径为: "E:\data\code\python project\chipNetwork\venv\Scripts\python.exe"
通常我们使用python要创建多个项目以解决不同的问题,比如项目1用于图像处理、项目2用于语音识别等,而各个项目所需要使用的python版本和所依赖的软件包不同,项目1可能会需要python3.6, pandas2.0 而项目2可能会需要 python3.7, pandas2.2 。如果两个项目都使用系统安装的解释器和系统中的全局依赖包,那么应该用每次要换一个项目的时候,依赖包都需要卸载重新安装相对应的版本,这样太过麻烦,不好管理。
所以就需要为每个项目创建一个虚拟环境,各个虚拟环境相互隔离,你装你的包,我装我的包,互不影响,便于管理,提高效率,比如为项目1创建一个环境1,为项目2创建一个环境2,自己装自己的包。
虚拟环境与依赖包的管理较为麻烦,所以一些环境管理工具和包管理工具应运而生,环境管理工具有venv, virtualenv, conda(同时是包管理工具), Pipenv, Poetry等,用于创建与管理虚拟环境。
为某项目创建一个虚拟环境后,该项目文件夹中会出现一个.venv文件夹,代表该项目的虚拟环境,.venv文件夹中包含该虚拟环境的解释器和一些依赖包。(一般都是基于系统解释器(安装在系统中的python)为某个项目创建一个新的虚拟环境,这个过程简单来说就是将安装在系统中的python.exe复制一份到项目的.venv\Script文件夹中,并创建一些其他必要的文件)
下图是分别基于系统python解释器创建两个项目的示意图,后文会有详细解释:
.venv\Lib\site-packages文件夹中存放的是依赖包,一般刚创建的新环境只有两三个依赖包,除非选择继承系统解释器的全局依赖包
".venv\Scripts\python.exe"路径下是该虚拟环境的python解释器
在pycharm中创建新项目时可以为项目创建一个虚拟环境,如下图
下图展示了在选择解释器的时候的一些选项分支和大致解释:
用virtualenv基于python解释器新建一个虚拟环境,
选择python解释器,可以是系统的,也可以是其他项目的.venv中的
选择Location,为该项目的.venv文件夹存放路径
inherit packages from base interpreter:是否继承全局软件包,勾选后,如果选择的解释器是系统解释器,则会继承解释器“site-packages”文件夹下的全局软件包。
Make available to all projects:勾选后,在选择existing environment或者设置中配置解释器的时候会显示出该项目虚拟环境的路径,要不得自己去找路径。(勾不勾选该环境都可以被其他项目所使用,就是勾选后会显示路径)
其他三个环境(包)管理工具conda, Pipenv, Poetry,其他三选项是分别使用这三个工具创建环境,virtualenv也是一个环境管理工具,一般小项目用virtualenv即可
选择已经存在的环境,在当前项目中不会新建.venv文件,与其他项目共享一个环境(包括解释器和软件包)
python:选择已经存在的python环境,比如其他项目中的python环境
conda:已经存在的conda环境
项目1基于系统python解释器创建一个新的环境,会在项目1中新建一个.venv文件夹,并将系统python解释器复制到项目1中,如果创建时勾选了inherit packages from base interpreter,则也会复制系统解释器的一些全局依赖包。
项目2同样基于系统python解释器创建一个新的环境,创建完成后,项目2可以在自己的虚拟环境中按需安装自己需要的包,并不会影响到其他项目。
项目3创建时选择existing env 然后选择 python ,选择系统解释器,这时候项目3会直接使用系统解释器的环境和相应的依赖包,并不会在项目文件夹下新建.venv文件夹且复制解释器。项目3对依赖包的更改就是对系统解释器的依赖包的更改。
项目4创建时选择existing env 然后选择项目2的环境,这时项目4会直接使用项目2的环境,也不会在项目文件夹下新建.venv文件夹且复制解释器。项目4对依赖包的更改就是对项目2的依赖包的更改。
未完待续......
【Python】环境管理 venv、pipenv、conda、poetry 对比_pipenv和conda区别-CSDN博客
Pycharm 中 virtualenv、pipenv、conda 虚拟环境的用法_pycharm virtualenv和conda-CSDN博客
一文解读 virtualenv & venv & pipenv 之间的联系与区别I'm George的博客-CSDN博客pipenv virtualenv
Python环境管理大比拼:pip、Conda、Pyenv、Rye、Virtualenv、PDM、Poetry等工具_python哪个虚拟环境工具好用-CSDN博客
全网最最最详细的virtualenv的使用命令详解_virtualenv命令-CSDN博客
pycharm中 Make available to all projects的含义-CSDN博客
关于勾选“Make availabel to all projects”-慕课网
An unbiased evaluation of environment management and packaging tools
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。