我必须澄清这anaconda只是一个集合。真正的环境管理器是conda. 这里是miniconda。它只包含管理环境的必要部分,而不是完整的anaconda集合。
conda不仅仅是一个简单的 Python 包管理器,而是一个系统范围的包管理器。它将帮助您轻松安装软件包。一个典型的例子是numpy在 Windows 上安装。没有conda,这真的很困难,因为它需要一个很难获得的特定 C 编译器。但有了,您只需一个命令conda即可安装。它将自动解决编译器问题和 C 依赖关系。numpyconda 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用来管理我的应用程序的依赖项。