为了账号安全,请及时绑定邮箱和手机立即绑定

安装 Python 包时使用 pip 与 conda 的具体原因

安装 Python 包时使用 pip 与 conda 的具体原因

犯罪嫌疑人X 2021-11-16 18:21:23
我使用 miniconda 作为我的默认 python 安装。关于何时使用 conda 与 pip 安装某些东西的当前(2019 年)智慧是什么?我通常的行为是使用 pip 安装所有内容,并且仅在无法通过 pip 获得软件包或 pip 版本无法正常工作时才使用 conda。总是偏袒有好处conda install吗?是否存在与混合两个安装程序相关的问题?我应该考虑哪些因素?目标:这不是基于意见的问题!我的问题是,当我可以选择安装带有pip或的python 包时conda,我该如何做出明智的决定?不是“告诉我哪个更好,而是”为什么我要使用一个而不是另一个,来回摆动会导致问题/效率低下吗?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

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

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

Pip 代表 Pip 安装包,是 Python 官方认可的包管理器,最常用于安装发布在 Python 包索引 (PyPI) 上的包。pip 和 PyPI 都由 Python Packaging Authority (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 不是竞争对手,而是专注于不同用户群体和使用模式的工具。


查看完整回答
反对 回复 2021-11-16
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

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


目前(2019 年)关于何时使用condavs.安装某些东西的智慧是什么pip ”

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

最佳实践清单

pip仅在之后使用conda

  • 安装尽可能多的需求conda,然后使用pip

  • pip 应该与--upgrade-strategy "only-if-needed"(默认)一起运行

  • 不要使用pip--user论证,避免所有的“用户”安装

使用 Conda 环境进行隔离

  • 创建康达环境隔离的任何更改pip品牌

  • 由于硬链接,环境占用的空间很小

  • 应注意避免piproot [ base ] 环境中运行

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

  • 一旦pip被使用conda将不会意识到变化

  • 要安装其他 Conda 软件包,最好重新创建环境

文本文件中的存储condapip要求

  • 可以conda通过--file参数传递包要求

  • pip接受带有-r或的 Python 包列表--requirements

  • conda env将根据具有condapip要求的文件导出或创建环境


查看完整回答
反对 回复 2021-11-16
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

这就是我所做的:

  1. 激活您的 conda 虚拟环境

  2. 使用 pip 安装到你的虚拟环境中

  3. 如果您遇到任何兼容性问题,请使用 conda

我最近遇到了这个,当 numpy / matplotlib 吓坏了,我使用 conda 构建来解决这个问题。


查看完整回答
反对 回复 2021-11-16
  • 3 回答
  • 0 关注
  • 305 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信