最近,我在安装SciPy时遇到了麻烦,特别是在我正在开发的Heroku应用程序上,我发现了Conda。

使用Conda可以创建环境,这与virtualenv的功能非常相似。我的问题是:

如果我使用Conda,它会取代对virtualenv的需求吗?如果不是,我如何将两者结合使用?我是在Conda中安装virtualenv,还是在virtualenv中安装Conda ? 我还需要使用pip吗?如果是这样,我还能在隔离的环境中安装带有pip的包吗?


当前回答

另一个新的选择,也是我目前最喜欢的启动和运行环境的方法是Pipenv

它目前是Python.org官方推荐的Python打包工具

其他回答

毫无疑问,Conda拥有更好的API。但是,我想谈谈使用conda的缺点,因为conda在其他答案中也有它的荣耀:

解决环境问题——conda环境后面的一个大刺。作为补救措施,建议您不要使用conda-forge通道。但是,由于它是最流行的通道,而且一些包(不仅仅是微不足道的包,甚至是非常重要的包,如pyspark)在conda-forge上独家可用,你很快就会陷入困境。 包装环境是一个问题

还有其他已知的问题。Virtualenv是一个上坡路,但路上很少有墙。另一方面,conda,在我的印象中,偶尔有这些硬墙,你只需要深吸一口气,使用virtualenv

我在公司工作,在几道防火墙后面的机器上,我没有管理权限

在我有限的python使用经验(2年)中,我遇到过一些库(JayDeBeApi,sasl)在通过pip安装时抛出c++依赖错误 错误:需要Microsoft Visual c++ 14.0。通过“Microsoft Visual c++ Build Tools”获取:http://landinghub.visualstudio.com/visual-cpp-build-tools

这些安装与conda很好,因此,从那些日子起,我开始与conda env合作。 然而,阻止conda在我没有写权限的c.programfiles中安装依赖并不容易。

1.不,如果你使用conda,你不需要使用任何其他工具来管理虚拟环境(如venv, virtualenv, pipenv等)。 也许有一些边缘情况conda没有覆盖,但virtualenv(更重量级)覆盖了,但到目前为止我还没有遇到过。


2.是的,您不仅仍然可以使用pip,而且可能不得不使用。conda包存储库包含的内容比pip的要少,所以conda install有时无法找到您正在寻找的包,如果它不是数据科学包,情况就更严重了。 而且,如果我没记错的话,conda的存储库更新速度和频率不如pip,所以如果您想使用软件包的最新版本,pip可能再次成为您的唯一选择。

注意:如果pip命令在conda虚拟环境中不可用,你必须先安装它,通过点击:

Conda安装PIP

Conda取代virtualenv。在我看来,这样更好。它不局限于Python,也可以用于其他语言。根据我的经验,它提供了更流畅的体验,特别是对于科学软件包。我第一次在Mac上正确安装MayaVi是用conda。 你仍然可以使用pip。事实上,conda会在每个新环境中安装pip。它知道pip安装包。

例如:

conda list

列出当前环境中所有已安装的包。 conda安装的包显示如下:

sphinx_rtd_theme          0.1.7                    py35_0    defaults

通过PIP安装的有< PIP >标记:

wxpython-common           3.0.0.0                   <pip>

简单地说,你只需要康达。

Conda在一个包中有效地结合了pip和virtualenv的功能,因此如果使用Conda,则不需要virtualenv。 conda支持的软件包数量之多,你会感到惊讶。如果还不够,可以在conda下使用pip。

这里是conda, pip和virtualenv对比页面的链接:

https://docs.conda.io/projects/conda/en/latest/commands.html conda-vs-pip-vs-virtualenv-commands。