我必须澄清这anaconda
只是一个集合。真正的环境管理器是conda
. 这里是miniconda
。它只包含管理环境的必要部分,而不是完整的anaconda
集合。
conda
不仅仅是一个简单的 Python 包管理器,而是一个系统范围的包管理器。它将帮助您轻松安装软件包。一个典型的例子是numpy
在 Windows 上安装。没有conda
,这真的很困难,因为它需要一个很难获得的特定 C 编译器。但有了,您只需一个命令conda
即可安装。它将自动解决编译器问题和 C 依赖关系。numpy
conda install numpy
回到你的问题,当你在 Pycharm 中创建环境时,它会询问你要创建哪个环境:Virtualenv Environment
、Conda Environment
或Pipenv Environment
. 至于我,我一般会选择Pipenv Environment
这个env会绑定到当前项目,并且可以生成一个lock文件。
在这种情况下,我想你现在可以理解了:没有名为“由 PyCharm 创建”或“Anaconda”的 env。只有名为“由 Virtualenv、Conda 或 Pipenv 创建”的环境。而 Pycharm 只是使用和包装其中之一。
Conda Environment
那么和Virtualenv Environment
(Pipenv Environment
本质上是一个Virtualenv Environment
复杂的)有什么区别pip
?不同之处在于它们的目的不同。
Conda Environment
通常用于“Python 用户”。他们使用 Python 作为工具来完成一些其他工作,例如网络爬虫、数据挖掘和图像处理。他们对 Python 知之甚少(因为他们不需要知道),所以conda
尽可能地自动化。他们的任务可以在计算机中的任何位置,因此由创建的环境conda
位于用户范围的目录中。他们有时需要不同的 Python 版本,这可以在conda
但不是virtualenv
.
Virtualenv Environment
通常用于“Python 开发人员”。他们使用 Python 来构建应用程序或包。创建的环境Virtualenv
通常位于当前项目的目录中。因此,您可以为每个应用程序创建一个环境并轻松管理依赖项。
总结一下:
Conda Environment
:
- 不仅管理 Python 包,还管理不同的 Python 版本和系统范围的依赖项。
- Envs 位于用户范围的目录中。
- 更少的环境。
Virtualenv Environment
:
- 管理 Python 包。主要目的是分离每个应用程序的依赖关系。
- 环境通常位于项目范围的目录中。(虽然
pipenv
默认在用户范围的目录中创建 env,但很多人认为在项目目录中应该是默认的。)
- 更多环境。(每个应用程序的新环境)
对我来说,我两个都用。我conda
用来管理不同的 Python 版本并pipenv
用来管理我的应用程序的依赖项。