我似乎经常问自己这个问题,最近改用 conda 环境(Anaconda),但我最终用谷歌搜索并没有走得太远。
我现在在自己的 conda 环境中运行所有项目,因为我喜欢将所有内容保持独立,并尽可能减少对其他程序的依赖。比如最近的一个环境:
conda create -n RL numpy tensorflow-gpu
然后我激活环境,并意识到“哦 - 我忘了安装gym”。在这种情况下,这仅在 PIP 包管理器中可用,因此我只需键入pip install gym
。但在其他情况下,如果包存在于 conda 和 pip 中,安装它的最佳方法是什么?
conda install package
pip install package
或者换句话说——有什么区别?
为了提供完整的图片,我在 Ubuntu 16.04 中运行所有内容,并根据项目在 python 2 和 3 之间切换。所以我的一些 conda 环境是 python 2,一些是 python 3。我发现有时pip3 install
python 3 需要,但并非总是如此 - 这是为什么?
其次,我的路径链接到 Anaconda3 目录中的 python 设置。
我目前的想法是,如果我通过安装conda
,它直接安装到我的环境中,但是通过pip
它安装到我的 anaconda3 站点包中,使其可用于我的 Anaconda3 目录下的所有 conda 环境。如果是这种情况,这意味着如果我pip install gym
在一个 conda 环境中,它也应该在所有其他环境中可用 - 但据我所知,这不是环境的预期行为。
请随时纠正我的假设并让我明白一些道理!
根据我对 Conda 的理解,它为您管理所有依赖项。例如,如果您有一个包(如 pandas)需要另一个包(如 numpy),它将下载这两个包(在警告您之后)。
conda 变得方便的地方是,有时一个特定的包需要另一个包的特定版本(例如 4.3 或更高版本),并且它们可能会在包之间发生冲突。要求和冲突定义了一个可以通过 SAT 求解器解决的数学问题。
您可以在这里找到相关信息和链接:https://www.continuum.io/blog/developer/new-advances-conda-0 https://www.continuum.io/blog/developer/new-advances-conda-0
因此,每次安装新软件包时,它都会升级(如果冲突,有时会降级)其他软件包,以确保每个软件包的功能。就我个人而言,我会选择conda
并使用pip
仅当包不受管理时conda
如果您对 conda 感兴趣,另一个链接:https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/ https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/
About pip3
,这是同时安装 Python 2 和 Python 3 时使用的命名,以避免命令冲突。在python 3环境中,命令pip
将相当于pip3
.
对于以下行为pip
,我可以确认安装仅在活动环境中完成,并且不适用于其他环境
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)