我似乎很多问自己这个问题,最近转向使用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
,它也应该在所有其他环境中可用 - 但就我所知,这不是环境的预期行为。
请随意纠正我的假设并对我有所帮助!
答案 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
希望有所帮助。