如果 pip 和 conda 在同一个环境中安装同一个包会发生什么?conda 是为了解决这个问题而设计的吗?你能pip uninstall
在不弄乱 conda 版本的情况下安全地使用 pip 版本吗?
2 回答
它们将安装在同一目录中,例如/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 目录。
根据Anaconda 网站上的这篇文章,这取决于安装的软件包。
当 conda 和 pip 一起使用来创建环境时,可能会出现问题,特别是当这些工具被背靠背多次使用时,会建立一个难以重现的状态。大多数这些问题源于这样一个事实,即 conda 与其他软件包管理器一样,控制未安装的软件包的能力有限。在 pip 之后运行 conda 可能会覆盖并可能破坏通过 pip 安装的软件包。同样,pip 可能会升级或删除 conda 安装的软件包所需的软件包。在某些情况下,这些损坏是装饰性的,其中存在一些本应删除的文件,但在其他情况下,环境可能会演变为无法使用的状态。
您可以删除安装的软件包,如第一个答案所示。但是可以将环境恢复到以前的版本,以便通过一起使用 conda 和 pip 来消除造成的损害(如果有的话)。
要列出对当前环境的每次更改的历史记录,请使用conda list --revisions
And 将其恢复到以前的版本,请使用conda install --revision 2
,其中 2 是选定的修订号。