我一直试图找到这个问题的答案有一段时间了,似乎不能谷歌正确的东西。我已经了解了一些关于pip和conda的事情,但仍然有这个挥之不去的问题。为什么安装的依赖项不同?例如,当我用pip(干净的环境)安装pandas,然后进行pip冻结时,它列出了6个已安装的软件包。当我做同样的事情,但与conda(干净的环境),并做conda名单,它列出了30多个软件包已安装。我不明白为什么会有这种区别。特别是在conda列表中,我不明白为什么需要像sqlite这样的东西来使pandas发挥作用。
根据我目前所了解到的情况,我唯一的直觉似乎有点道理,那就是conda安装了必需的软件包和推荐的软件包。由于conda更多的是用于科学计算,它继续安装通常相互补充的东西。而pip实际上只安装了使pandas正常工作的最低限度。如果我错了,请让我知道,因为我只是想更好地了解发生了什么。
这个问题的背景,我工作的新工程公司要求我使用miniconda,这很好,到目前为止我喜欢它。我通常使用python制作一些自定义工具,用于我的工程领域,并使用pyinstaller将它们 Package 在可执行文件中,这样人们就不需要使用python(我发现这是让一些顽固的工程师对python可以做什么感兴趣的最好方法)。所以,我不需要的额外包只会增加pyinstaller必须处理的负担,所以如果我可以避免它们,那么这就是我想要做的。我很想使用--no-deps来强制只获取我认为我需要的包,但我想在颠覆conda的配方之前更多地了解conda在做什么。谢谢!
1条答案
按热度按时间8yoxcaq71#
pip
是python源代码的包安装程序:(https://pypi.org/project/pip/)Conda是一个开源的包管理系统和环境管理系统源码:(https://docs.conda.io/en/latest/)
pip
和conda
之间的一个关键区别是pip
只管理python包,而conda是一个通用的包管理器。对于只有
conda
显式安装的pip
和python
的新环境,我们可以在pip list
中看到:在
conda list
正如我们所看到的,
conda list
包含python
、pip
以及它们所依赖的linraries,因为这些也由conda
管理,并且在设计上不包含在python包中,但是pip
不知道它们。