由pip和conda安装的相同包

时间:2017-09-27 21:32:10

标签: python pip conda package-management

如果pip和conda在同一环境中同时安装了相同的软件包,会发生什么? conda是为了应对这个吗?你可以安全地pip uninstall点数版本而不会弄乱conda版本吗?

2 个答案:

答案 0 :(得分:6)

它们将安装在同一目录中,例如/home/user/miniconda/env/envname/lib/python3.6/site-packages/requests

因此,如果您通过conda和pip安装包,然后通过pip卸载它,源代码已经消失。这意味着你不能再使用这个包了。

安装软件包时,pip将检查dist-info或egg-info目录,而conda将检查conda-meta目录。在这种情况下,如果先通过pip安装,然后通过conda安装,则可以通过conda和pip安装相同的软件包。在相反的情况下,pip会认为已经安装了软件包。

要完全卸载由conda和pip安装的软件包,您需要同时运行conda remove以删除conda-meta和pip uninstall中的信息以删除dist-info目录。

答案 1 :(得分:1)

根据Anaconda网站上的this post,它取决于安装的软件包。

  

将conda和pip一起用于创建环境时,尤其是在多次背靠背使用工具时,会出现问题,从而导致难以复制的状态。这些问题中的大多数源于这样一个事实,即conda与其他软件包管理器一样,对未安装的软件包进行控制的能力有限。在pip之后运行conda可能会覆盖并可能破坏通过pip安装的软件包。同样,pip可能会升级或删除conda安装的软件包所需的软件包。在某些情况下,这些损坏是表面上的损坏,其中存在一些应删除的文件,但在其他情况下,环境可能会演变成无法使用的状态。

您可以删除第一个答案中显示的已安装软件包。但是可以通过将conda和pip一起使用来恢复以前的版本,以消除造成的损害(如果有的话)。

要列出对当前环境的每次更改的历史记录,请使用conda list --revisions 并将其还原到以前的版本,请使用conda install --revision 2,其中2是选定的修订号。