【问题标题】:Difference between conda and pip installs within a conda environment在 conda 环境中安装 conda 和 pip 之间的区别
【发布时间】:2018-01-31 13:03:28
【问题描述】:

我似乎经常问自己这个问题,最近切换到使用 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。我发现有时 python 3 需要pip3 install,但并非总是如此 - 为什么会这样?

其次,我的路径链接到我的 Anaconda3 目录中的 python 设置。

我目前的想法是,如果我通过conda 安装,它会直接安装到我的环境中,但通过pip 它会安装到我的 anaconda3 站点包,使其可用于我的 Anaconda3 目录下的所有 conda 环境。如果是这种情况,这意味着如果我在一个 conda 环境中pip install gym,它也应该在所有其他环境中可用 - 但据我所知,这不是环境的预期行为。

请随时纠正我的假设并给我一些理智!

【问题讨论】:

标签: python pip anaconda conda package-managers


【解决方案1】:

根据我对 Conda 的理解,它为您管理所有依赖项。例如,如果你有一个包(比如 pandas)需要另一个包(比如 numpy),它会下载两个包(在警告你之后)。

conda 变得方便的地方在于,有时一个特定的包需要另一个包的特定版本(例如 4.3 或更高版本),它们可能是包之间的冲突。需求和冲突定义了一个可以通过 SAT 求解器解决的数学问题。

您可以在这里找到相关信息和链接:https://www.continuum.io/blog/developer/new-advances-conda-0

所以每次你安装一个新的包时,它都会升级(或者如果冲突,有时降级)其他包,以确保每个包的功能。个人而言,我使用conda 并仅在包不受conda 管理时使用pip

如果您对 conda 感兴趣,请提供另一个链接:https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/

关于pip3,它是您同时安装Python 2 和Python 3 时使用的命名,以避免命令冲突。在 python 3 环境中,命令pip 将等效于pip3

对于pip的行为,我可以确认安装只在活动环境中完成,其他人无法使用

【讨论】:

    【解决方案2】:

    不同之处在于 conda 会知道它创建的新环境,但 pip 不会。您需要在环境中安装 pip。

    如果您创建一个新环境并激活它:例如

    conda create -n env_name
    source activate env_name
    

    然后使用 conda 安装 pip:

    conda install pip
    

    (得到警告)如果您运行which pip,这应该会给出新 conda 环境中 pip 安装的路径(类似这样):

    /anaconda3/envs/env_name/bin/pip
    

    但是,仅仅运行 pip install new_package 似乎仍然不起作用,在 conda 环境中安装 pip 包时需要显式引用完整路径(例如 Tom Roth's blog post

    /anaconda3/envs/env_name/bin/pip install new_package
    

    希望对您有所帮助。

    【讨论】:

    • 我不知道早期版本,但在conda 4.7 中,您可以在conda 环境中安装pip 包,而无需安装pip 或引用pip 使用其完整小路。您还可以注意到,当您创建新的conda 环境时,会自动安装pip
    猜你喜欢
    • 2021-12-16
    • 2022-08-03
    • 1970-01-01
    • 2019-07-09
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2019-01-04
    相关资源
    最近更新 更多