首页 文章

Conda是否取代了virtualenv的需求?

提问于
浏览
122

我最近在安装SciPy时出现了问题,特别是在我正在开发的Heroku应用程序上时发现了Conda .

使用Conda,您可以创建与virtualenv非常相似的环境 . 我的问题是:

  • 如果我使用Conda,它会取代对virtualenv的需求吗?如果没有,我该如何将两者结合使用?我是在Conda中安装virtualenv,还是在virtualenv中安装Conda?

  • 我还需要使用pip吗?如果是这样,我还能在隔离环境中安装带有pip的软件包吗?

6 回答

  • 41
    • Conda取代了virtualenv . 在我看来它更好 . 它不仅限于Python,也可以用于其他语言 . 根据我的经验,它提供了更加顺畅的体验,特别是对于科学包装 . 我第一次在Mac上正确安装MayaVi是 conda .

    • 您仍然可以使用 pip . 实际上, conda 在每个新环境中安装 pip . 它知道pip安装的软件包 .

    例如:

    conda list
    

    列出当前环境中的所有已安装软件包 . Conda安装的软件包显示如下:

    sphinx_rtd_theme          0.1.7                    py35_0    defaults
    

    和通过 pip 安装的那样:

    wxpython-common           3.0.0.0                   <pip>
    
  • 21

    简短的回答是,你只需要conda .

    • Conda在单个包中有效地结合了pip和virtualenv的功能,因此如果您使用conda,则不需要virtualenv .

    • 你会惊讶地发现有多少包conda支持 . 如果还不够,你可以在conda下使用pip .

    这是conda页面的链接,比较conda,pip和virtualenv:https://conda.io/docs/commands.html#conda-vs-pip-vs-virtualenv-commands .

  • 5

    Virtual Environments and pip

    我将补充说,使用Anaconda,creatingremoving conda环境很简单 .

    > conda create --name <envname> python=<version> <optional dependencies>
    
    > conda remove --name <envname> --all
    

    activated environment中,通过 condapip 安装软件包:

    (envname)> conda install <package>
    
    (envname)> pip install <package>
    

    这些环境与conda's pip-like package management密切相关,因此创建环境并安装Python和非Python包都很简单 .


    Jupyter

    此外,环境中的installing ipykernel在Jupyter笔记本的内核下拉菜单中添加了一个新列表,将可重现的环境扩展到笔记本电脑 . 截至Anaconda 4.1,nbextensions were added,更容易为笔记本添加扩展 .

    Reliability

    根据我的经验,conda在安装大型库(如 numpypandas )时更快,更可靠 . 此外,如果您希望转移您保存的环境状态,您可以通过sharingcloning env .

  • 1

    另一个新选项和我当前首选的启动和运行环境的方法是Pipenv

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

  • 103

    安装Conda将使您能够根据需要创建和删除python环境,因此为您提供与virtialenv相同的功能 .

    如果是两个发行版,您将能够创建一个独立的文件系统树,您可以根据需要安装和删除python包(可能是pip) . 如果您希望针对不同的用例使用相同库的不同版本,或者您只是想尝试一些分发并在保留磁盘空间后将其删除,那么这可能会派上用场 .

    差异:

    许可协议 . 虽然virtualenv属于最自由的MIT licenseConda使用3条BSD许可 .

    Conda为您提供自己的包装控制系统 . 这个包控制系统经常提供流行的非python软件的预编译版本(对于大多数流行的系统),这可以很容易地使一些机器学习包工作 . 也就是说,您不必为您的系统编译优化的C / C代码 . 虽然这对我们大多数人来说是一个很大的缓解,但它可能会影响这些图书馆的表现 .

    与virtualenv不同,Conda至少在Linux系统上复制了一些系统库 . 这些库可能会不同步,导致程序的行为不一致 .

    判决书:

    Conda很棒,应该是您开始机器学习的默认选择 . 这将节省你一些时间搞乱gcc和众多包 . 然而,康达不会取代virtualenv . 它引入了一些可能并不总是需要的额外复杂性 . 它有不同的许可证 . 您可能希望避免在分布式环境或HPC硬件上使用conda .

  • 5

    是的,conda比virtualenv更容易安装,并且几乎取代了后者 .

相关问题