这些命令是否执行相同的操作?

时间:2019-09-09 09:19:47

标签: python pip conda

基本上,我想知道这两个片段是否做同样的事情:

conda install -n myEnv myPackage

VS

conda activate myEnv
pip install myPackage

或者以另一种方式,激活conda环境时是否pip install等于在myEnv上执行conda install

编辑:我认为这很明显,但是=>更准确地说,第二个片段是否仅将软件包安装在环境或整个系统上?

PS:询问是因为pip有一个软件包,但conda没有,我希望仅将其安装在myEnv上

2 个答案:

答案 0 :(得分:2)

Anaconda docs明确指出,如果您使用conda作为虚拟环境管理器,则应坚持使用conda install来尽可能地安装新软件包:

  

不幸的是,将conda和pip一起使用时可能会出现问题   创建环境,尤其是在使用工具时   背靠背多次,建立了一个很难做到的状态   复制。 …在点子之后运行conda有潜力   覆盖并可能破坏通过pip安装的软件包。同样,   pip可能会升级或删除由conda安装的软件包的软件包   要求。

如果您无法从conda频道中获取所需的所有软件包,他们会这样说,即使您不使用pip,这也是一个很好的建议:

  

如果希望同时使用pip安装软件   conda软件包是将此安装安装到   专用的conda环境,可保护其他环境免受任何损害   点子可能会进行的修改。

最后是相同的文档注释:

  

使用conda环境进行隔离

     
      
  • 创建一个conda环境以隔离点子所做的任何更改
  •   
  • 由于硬链接,环境几乎不占空间
  •   
  • 应注意避免在“根”环境中运行pip
  •   

首先activate为您提供了正确的conda环境,pip install命令应使用该环境的pip并仅安装到该环境中。

答案 1 :(得分:0)

是,不是。 pip从PyPI下载并安装软件包,而conda从Anaconda存储库中下载并安装软件包。 有PyPI中的软件包没有出现在Anaconda中,反之亦然。 对于管理环境,我会选择一种方式,因为使用pip可以冻结到requirements.txt(pip freeze > requirements.txt)和conda中,您可以导出整个环境(conda env export)或列表包(conda list --export > requirements.txt)。但是,如果您尝试使用pip中的conda生成的文件,则很可能会失败。