PyCharm虚拟环境和Anaconda环境之间有什么区别?
PyCharm虚拟环境和Anaconda环境之间有什么区别?
当我在PyCharm中创建一个新项目时,它会创建一个新的虚拟环境。我已经了解到,当我执行Python脚本时,它们将在该环境中使用解释器而不是系统环境。因此,如果我需要安装一些包,我只需安装它们在这个环境中而不是在系统环境中。这很酷。
我也了解到Anaconda环境。当我创建一个新的Anaconda环境时,它会与系统环境分离,我可以在我的项目中使用此环境,仅安装所需的包而不是在主系统环境中安装。
现在,我的问题是,PyCharm创建的虚拟环境和Anaconda创建的环境之间有什么区别?PyCharm创建的虚拟环境大约为15-20MB,而Anaconda的虚拟环境为90MB。所以,肯定有区别。此外,我已经了解到我可以配置PyCharm使用Anaconda环境解释器。
那么,PyCharm和Anaconda创建的环境有什么区别?
这两个环境都基于Python的virtualenv,你可以独立使用它们并根据需要在其中配置(或安装)软件包,而不必担心冲突。这就是virtualenv的核心思想。
Anaconda是一个Python发行版(就像Linux发行版一样),默认情况下会根据其对开发者需要什么的看法添加其他软件包。因此,其安装程序要比安装纯粹的Python大。这也是为什么它的虚拟环境非常大的原因。
Pycharm是一款集成开发环境,它恰好支持Python的虚拟环境功能。因此,如果你希望,它可以为你创建虚拟环境。如果使用纯Python发行版进行创建,它的大小会比使用类似Anaconda这样的发行版小,就像你已经注意到的那样。
大小问题并不局限于Anaconda,如果你列出Anaconda为你安装的所有软件包conda list
并在“轻量级”虚拟环境中手动安装它们,你也会看到其大小增加。我相信你明白我的意思。
我必须澄清一下,anaconda
只是一个集合。真正的环境管理器是conda
。这里是miniconda
。它只包含管理环境所需的必要部分,而不是一个完整的anaconda
集合。
conda
不仅是一个简单的Python包管理器,而是一个系统级别的包管理器。它将帮助您无痛安装软件包。 Windows上安装numpy
就是一个经典例子。没有conda
,很困难,因为它需要特定的C编译器,难以获得。但有了conda
,您可以使用一个命令conda install numpy
安装numpy
。它会自动解决编译器问题和C依赖关系。
那么回到您的问题,当您在Pycharm中创建一个env时,它会询问您想要创建哪个env:Virtualenv Environment
,Conda Environment
或Pipenv Environment
。 对于我来说,我通常选择Pipenv Environment
,因为这个env将绑定到当前项目,并且可以生成一个lock文件。
在这种情况下,我认为您现在可以理解了:没有一个名为“由PyCharm创建”或“Anaconda”的env。只有以“创建由Virtualenv、Conda或Pipenv”的env名称。而Pycharm只是使用其中一个并包装了它们。
Conda Environment
和Virtualenv Environment
之间有什么区别(Pipenv Environment
本质上是具有复杂pip
的Virtualenv Environment
)?这种区别来自于它们不同的目的。
Conda Environment
通常适用于“Python用户”。他们使用Python作为工具来做一些其他工作,如网络爬虫、数据挖掘和图像处理。他们对Python了解不多(因为他们不需要知道),因此conda
尽可能自动化。他们的任务可能在计算机的任何地方,因此由conda
创建的env位于用户级别的目录中。他们有时需要不同的Python版本,这可以在conda
中完成,但不可以在virtualenv
中完成。
Virtualenv Environment
通常适用于“Python开发人员”。他们使用Python构建应用程序或软件包。由Virtualenv
创建的env通常位于当前项目目录中。因此,您可以为每个应用程序创建一个env,并轻松管理依赖关系。
总之:
Conda Environment
:
- 管理不仅是Python包,而且还有不同的Python版本和系统范围的依赖项。
- 环境位于用户级别的目录中。
- 较少的环境。
Virtualenv Environment
:
- 管理Python包。主要目的是为每个应用程序分离依赖项。
- 环境通常位于项目级别的目录中。(尽管
pipenv
默认在用户级别目录中创建env,但许多人认为在项目目录中创建env应该是默认值。) - 更多的环境。(每个应用程序都需要创建一个新环境)
对于我来说,我同时使用它们。我使用conda
管理不同的Python版本,并使用pipenv
管理我的应用程序的依赖项。