安装 Python 包时选择 pip 与 conda 的具体原因

新手上路,请多包涵

我使用 miniconda 作为我的默认 python 安装。关于何时使用 conda 与 pip 安装某些东西,当前(2019 年)的智慧是什么?

我通常的行为是使用 pip 安装所有内容,并且仅在无法通过 pip 获得软件包或 pip 版本无法正常工作时才使用 conda。

总是喜欢 conda install 吗?混合使用这两个安装程序是否存在问题?我应该考虑哪些因素?


客观性: 这不是一个基于意见的问题!我的问题是,当我可以选择使用 pipconda 安装 python 包时,我该如何做出明智的决定?不是“告诉我哪个更好,而是 为什么 我要用一个而不是另一个,来回摆动会导致问题/效率低下吗?

原文由 Dustin Michels 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 898
2 个回答

我发现我首先使用 conda 只是因为它安装了二进制文件,而不是如果包不存在则尝试 pip。例如,在 conda 中安装 psycopg2 比在 pip 中安装要容易得多。

https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/

Pip 代表 Pip Installs Packages,是 Python 官方认可的包管理器,最常用于安装在 Python Package Index (PyPI) 上发布的包。 pip 和 PyPI 均由 Python 打包管理局 (PyPA) 管理和支持。

简而言之,pip 是 Python 包的通用管理器; conda 是一种与语言无关的跨平台环境管理器。对于用户来说,最显着的区别可能是:pip 在任何环境中安装 python 包; conda 在 conda 环境中安装任何包。如果您所做的只是在隔离环境中安装 Python 包,那么 conda 和 pip+virtualenv 大部分是可以互换的,只是在依赖处理和包可用性方面存在一些差异。我所说的隔离环境是指 conda-env 或 virtualenv,您可以在其中安装包而无需修改系统 Python 安装。

如果我们只关注 Python 包的安装,那么 conda 和 pip 服务于不同的受众和不同的目的。例如,如果您想在现有系统 Python 安装中管理 Python 包,conda 无法帮助您:按照设计,它只能在 conda 环境中安装包。例如,如果您想使用许多依赖外部依赖项的 Python 包(NumPy、SciPy 和 Matplotlib 是常见示例),同时以有意义的方式跟踪这些依赖项,pip 无法帮助您:从设计上讲,它管理 Python 包并且只管理 Python 包。

Conda 和 pip 不是竞争对手,而是专注于不同用户群体和使用模式的工具。

原文由 eatmeimadanish 发布,翻译遵循 CC BY-SA 4.0 许可协议

注意:以下建议现已 成为官方文档的一部分


关于何时使用 condapip 安装某些东西,当前(2019 年)的智慧是什么?

Anaconda Inc 的 Jonathan Helmus 在“ 在 Conda 环境中使用 Pip”一 文中很好地总结了这一点。以下是最终最佳实践建议的摘录:

最佳实践清单

使用 pip 仅在 conda 之后

  • 使用 conda 安装尽可能多的要求,然后使用 pip
  • pip 应使用 --upgrade-strategy "only-if-needed" 运行(默认)
  • 不要将 pip--user 参数一起使用,避免所有“用户”安装

使用 Conda 环境进行隔离

  • 创建一个 Conda 环境以隔离任何更改 pip
  • 由于硬链接,环境占用的空间很小
  • 应注意避免在 [ base ] 环境中运行 pip

如果需要更改,请重新创建环境

  • 一次 pip 被使用 conda 将不知道变化
  • 要安装额外的 Conda 包,最好重新创建环境

在文本文件中存储 condapip 要求

  • 包要求可以通过 --file 参数传递给 conda
  • pip 接受带有 -r--requirements 的Python包列表
  • conda env 将根据具有 condapip 要求的文件导出或创建环境

原文由 merv 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题