在conda环境中conda和pip安装之间的区别

时间:2017-08-23 05:26:25

标签: python pip anaconda conda package-managers

我似乎很多问自己这个问题,最近转向使用conda环境(Anaconda),但我最终谷歌搜索并没有走得太远。

我现在在他们自己的conda环境中运行我的所有项目,因为我喜欢将所有项目保持为独立,并尽可能少地依赖于其他程序。例如,最近的环境:

conda create -n RL numpy tensorflow-gpu

然后我激活环境,并意识到“哦 - 我忘了安装健身房”。在这种情况下,这仅在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网站包,使其可用于我的所有conda环境Anaconda3目录。如果是这种情况,这意味着如果我在一个conda环境中pip install gym,它也应该在所有其他环境中可用 - 但就我所知,这不是环境的预期行为。

请随意纠正我的假设并对我有所帮助!

2 个答案:

答案 0 :(得分:1)

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

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

您可以在此处找到有关的信息和链接:https://www.continuum.io/blog/developer/new-advances-conda-0

因此,每次安装新软件包时,它都会升级(或者有时会在发生冲突时降级)其他软件包,以确保每个软件包的功能。 Personnaly,我选择conda并仅在pip

管理包时使用conda

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

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

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

答案 1 :(得分:0)

区别在于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

希望有所帮助。