欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Pycharm 解释器环境 Virtualenv/Conda 的差异

最编程 2024-03-12 09:12:53
...

Pycharm解释器环境Virtualenv/Conda的区别

这个问题纠结很久了,每次都是在重装系统后第一次安装Pycharm和Anaconda的时候遇到时才想起来,索性写篇文章记录一下,免得什么时候又忘了。

碎碎念

记得第一次装Python环境的时候就在网上看到教程说,"Anaconda+Pycharm"的方法可以让平时写Python项目的时候更轻松便捷,当时是小白,啥也不懂,反正就一步步跟着走。

后面发现教程里选择了让Anaconda来管理环境,就心想那安装新的Python包的话应该就是从Anaconda的命令行界面进行吧,结果当在Pycharm里选择解释器环境(Add Python Interpreter)的时候,好多篇文章都选的是那个Virtualenv Environment,特别是当我注意到下面还有个Conda Environment的选项之后,整个人都迷茫了……我就想,Conda Environment不正应该是Pycharm对Anaconda做的适配吗?按理说,应该两个都装的话选这个才对啊

然后就是比对好几篇****里的高赞高阅读量的博客之后,发现都是选的Virtualenv Environment,就觉得那这个就应该是对的了,于是也懒得找Conda Environment到底是何方神圣了。但我心里还是隐隐疑惑,到底是为什么呢?

然后,今天又又又又遇见这个问题了,不行,这次不能随随便便就跳过,非得解决了才行,解决问题要踏踏实实的才好,前几次就当自己交学费了。于是我又上网找了资料,终于搞懂了它们都是干什么的。

行吧,以上就当是背景介绍了,算是自己第一次写的随笔吧,碎碎念太多了……


Conda Environment该不该选?

先说结论,该选,而且还是正解。前提是你打算"用Anaconda来管理各种Python环境,同时管理Python下面的各种包"。

选了Conda Environment意味着什么?

  1. 意味着你以后如果要装新的包的话,在Pycharm里install一个包就实质上直接装到了Anaconda下。我们知道,Anaconda是可以在envs下来同时装多个不同版本的Python来实现管理的,假如你现在在Anaconda Prompt的命令行用conda create -n environment_name python=X.X命令创建了一个pythonX.X的新虚拟环境,再通过Pycharm对你的项目使用了这个环境,然后安装新的包后,就只会在你的这个Anaconda-envs的虚拟环境下出现这个包,而对其他的任何环境没有影响;

  1. 这种情况下,不论是通过Pycharm安装还是在Anaconda prompt下安装新的包,都是等价的。即在Anaconda prompt下安装后会同步到Pycharm使用该环境的项目里,通过Pycharm安装也会自动把包装到Anaconda对应环境的文件夹下。

And then? New environment or Existing environment?

这点应该没有什么疑惑的,都是字面意思,使用New environment的情况无非就是:

  1. 以前用的那个环境被我前几个项目霍霍的装了乱七八糟的包,或者干脆丢失了很多包,我想重新再用一个崭新的环境;

  2. 项目需要,我得换Python版本了;

  3. 就喜欢新的。

除此之外应该用的都是Existing environment了。

Conda Environment差不多都说完了,接下来说说Virtualenv Environment是怎么回事。


何时选Virtualenv Environment?

选这个还专门安装Anaconda的都是贪图人家身子的

选了,会怎样呢?

  1. Pycharm会自动为你选择的python.exe创建一个虚拟环境。是不是感觉有点熟悉?对的,Anaconda也是附带这个效果的,只不过Anaconda的虚拟环境物理上位于envs文件夹下(base环境除外);Pycharm创建的虚拟环境,如图所示,是在你的一个先前或现在的项目下;

  1. 以后想用Anaconda prompt安装新的包时,不会在Pycharm的项目里同步。同理,在Pycharm里安装的新包,即使我当初解释器选择的就是Anaconda下的python.exe。这正是Virtualenv Environment的意义所在——虚拟一个独立的环境,在此之中进行的任何安装新包、卸载旧包操作与先前无关。当然,如果你直接在如上图所示的 D:\PycharmProjects\myFirstPythonProject\venv 下导入新的包,那确实会同步到Pycharm里。

  2. 与一般只安装了python和Pycharm的相比,多了Anaconda的大量基础包。毕竟用的跟只装python的不一样嘛,人家只有python,你还有Anaconda专门扩充的库。

  3. 其实就用不上Anaconda的虚拟环境了,你现在就已经是在建立虚拟环境了。

New environment or Existing environment?

如果在Existing environment下直接选择了Anaconda的环境,其实还是可以同步的……毕竟直接把人Anaconda当成自己项目的家,吃喝拉撒都在那里,也没新建一个环境,新建的话倒是不能同步。