跳至主要内容

Conda 调查结果

·阅读时长:10 分钟
Dave Clements
开源社区经理

Anaconda 在 2022 年底 对 conda 社区进行了调查。这篇文章回顾了我们从调查中学到的东西,以及这些发现如何影响 conda 的未来方向。

大约在同一时间,Python 软件基金会 发布了他们的(更大得多的)Python 包裹调查的结果。这两项调查提出了一些相同的问题,也有一些不同的问题。我们将 PSF 调查中的见解纳入,尤其是那些与 conda 社区特别相关的见解。

虽然调查本身只有 72 个回复,并不代表整个 conda 用户社区,但此处列出的汇总统计数据可能指向我们可能需要通过进一步研究或用户访谈跟进的特定问题领域。PSF 收到了 8774 个回复。

摘要包含多个部分


人们对 conda 的满意度如何?

conda 调查提出了 4 个问题,我们将其归类为“满意度”类别。

这里的消息大多是好消息,但结果也表明仍然需要改进。例如,在“Conda 是我首选的包管理器”中,61% 的人对该说法表示“满意”,但 25% 的人表示“中立”,近 14% 的人表示“不满意”。这意味着 39% 的人不能说他们属于“满意”类别。对于另外三个问题,“不满意”类别的比例分别是 28%、24% 和 32%。这些数字已经有所改善,但还没有达到我们想要的结果。请参阅下一部分中的具体反馈,了解导致这些数字的原因。

哪些方面需要改进?

调查要求受访者说明哪些变化应该优先考虑。

速度

对速度的需求是最突出的主题。

  • 71% 的人优先考虑提高速度。
  • 60% 的人使用 mamba,它以比标准 conda 求解器快得多而闻名。

一些个别回复

  • "直接将 libmamba 设为默认求解器吧!!!"
  • "现在几乎 100% 都使用 Mamba 因为它速度快,只有在出现问题时才会回退到 Conda。"
  • "亲爱的上帝,请让求解器开箱即用时速度更快。"

这项调查是在 2022 年 11 月和 12 月进行的,我们认为这是一个 conda 性能轮廓的转折点。22.11.0 conda 版本(在调查窗口结束时发布)实现了并行包下载和提取,并将 conda-libmamba-solver(求解器是在 2022 年 3 月发布中添加的)中的 experimental 标签删除。在调查时,只有 19% 的受访者使用 conda-libmamba-solver

这些变化代表了持续多年的(并且正在继续的)改进 conda 速度的努力。我们的下一项调查将告诉我们 conda 是否成功地加快了速度...

更好的错误信息

紧随速度之后的是“更友好的错误信息”,65% 的受访者都支持这一观点。

一些个别反馈

  • "当它有效时,它非常棒。当它失效时,诊断依赖项解析问题和找出发生了什么非常痛苦,导致使用一些临时的工具,例如将 json 解析成 networkx 或类似的东西进行探索。"
  • "依赖项解析冲突的可探索性。"

conda-libmamba-solver 错误消息将很快得到改善,因为求解器的最新版本将被集成到 conda 中

更好的互操作性

改进与其他包管理器的互操作性 被 62% 的受访者列为优先事项。这一观点得到了人们使用多个包管理器的频率的印证。

79% 的 conda 调查受访者除了 conda 之外还使用其他包管理器。75% 的所有受访者也使用 pip,55% 的人使用 mamba。

PSF 调查询问了“您使用什么打包工具?”他们将包管理和环境管理结合在一起(就像 conda 本身一样)。

(注意:PSF 调查结果以蓝色边框显示。)

在这项调查中,conda 的使用频率低于 6 个“标准”(并且高度重叠)的条目(pip、venv/virtualenv、PyPI、setuptools 和 wheel),以及 poetry。pip 的用户数量几乎是 venv(第二受欢迎的回复)的两倍。conda 紧随其后的是 pipenv 和 twine。conda-build 列在底部,只有 4-5% 的受访者使用它。

(这只是时间上的一个快照,因此我们无法确定 conda 生态系统在 Python 生态系统中的影响力是在增长还是在下降。)

PSF 调查专门询问了几个与互操作性相关的问题。

当 PSF 要求受访者对这 4 个优先事项进行排名时,排名最高的(远超其他选项)是“支持 Python 打包工具之间的更多互操作性”。排名最低的是“支持 Python 打包与其他语言的打包工具之间的互操作性”。

其他几个问题表明人们强烈偏爱只使用一种工具/工作流程进行包管理。

第一个问题是“我更喜欢拥有一个明确定义的“官方”工作流程”,75% 的人表示同意。第二个类似(但措辞相反)的问题询问“多种工具的存在是否有益于 Python 打包生态系统?”对此,46% 的人表示不同意,23% 的人表示中立。

我们该如何处理这些结果?

首先要指出的是,Python 社区强烈优先考虑 Python 打包工具之间的互操作性,但对多种语言的支持排在最后。这对 conda 来说既是好消息,也是坏消息。Conda 已经可以很好地与 pip 协同工作。但不利的一面是,大多数 PSF 受访者并不优先考虑对多种语言的支持,而这正是 conda 的优势之一。

PSF 受访者也明确表示更喜欢拥有一个单一的打包工具包。这并不一定对 conda 是坏消息,因为 conda 生态系统解决了 pip 没有解决的顾虑。PSF 调查没有询问“您希望哪个工具包成为首选”。但是,考虑到 Python 社区目前对 pip/venv 的使用,我们猜想他们会说“pip/venv”,而这是我们需要解决的挑战。我们希望 pip/venv 目前更广泛的使用仅仅是由于 pip 提供的 Python 包范围更广,并且这是一个 Python 社区调查,而不是对 pip/venv 功能比 conda 更有优势的广泛偏好。但是,从这些调查中我们无法确定这一点。

何时使用 conda?

行业和领域

超过 40% 的受访者与学术界有关。由于学生加上教授/讲师的人数总和不到 25%,因此这些学者中很大一部分来自其他工作职能。具体领域构成了回复的“长尾”。

在询问 参与者在什么环境中使用 conda 时,81% 的人表示在工作中使用,而只有 18% 的人表示在与学校相关的项目中使用。72% 的人使用 conda 进行开源项目。53% 的人将其用于“个人”项目。

领域

调查使用的是 Anaconda Nucleus 网站上的软件包目录中的类别 来询问 conda 在哪些应用领域被使用。

数据使用与 ETL(67%,提取、转换和加载)和机器学习与 AI(63%)是最常见的应用。可视化(54%)、打包(54%)和科学(53%)构成了接下来最大的几个类别。

conda 与什么一起使用?

软件包

conda 调查要求人们列出他们最常用的 5 个软件包。

这个问题有一些明显的领先者,Numpy 和 Pandas 被超过一半的受访者使用。Matplotlib、Scipy 和 Scikit-learn 被 1/4 到 1/5 的受访者使用。

计算环境

Linux 是 占主导地位的操作系统,使用率接近 70%,但 macOS 和 Windows 也紧随其后,使用率都在 50% 左右。VS Code 是 首选的 IDE,使用率为 70%。Jupyter 平台紧随其后,使用率都在 40% 以上。PyCharm 的使用率为参与者的 1/3。

Python 是最广泛使用的编程语言,使用率几乎达到 100%。Shell、C/C++、R 和 SQL 的用户数量是 Python 的 1/3 到 1/4。

还有关于 框架工具CI 工具机器学习框架ML 操作 的数据。

数据

受访者平等地使用开源和专有数据,两者都获得了接近 80% 的响应率。

列出了超过 33 种数据格式,其中 CSV 和 JSON 最受欢迎,每 7 个受访者中就有 6 个使用 CSV。

受访者列出了他们使用的 13 种数据库管理系统。SQLite (36%) 和 PostgreSQL (32%) 位居榜首,其次是 MySQL (19%)。

工具

在统计分析工具类别中,Microsoft Excel (35%) 和 R (31%) 是最受欢迎的两种工具。

调查中询问了有关 ETL 和数据可视化工具使用的具体问题。20 种 ETL 工具有用户,但只有 Pandas (54%)、Apache Airflow (10%) 和 Apache Spark (10%) 的用户超过一两个。Jupyter (67%) 是数据可视化响应中的明显领导者,其次是 Plotly (35%)。列出了 23 种其他可视化工具,大多数仅有一两个用户。

谁使用 conda?

72 名受访者中有 71 名在工作中编写了一些代码。

参与者体验

conda 组和 Python 组的经验水平相似。 68% 的 conda 受访者使用 conda 的经验超过 4 年,而 66% 的 Python 受访者使用 Python 的经验超过 4 年。conda 调查询问了参与者关于其工作职能、行业和项目类型的意见。

工作职能

最常见的角色是开发者,紧随其后的是研究科学家。排名前 12 的角色可以大致分为以下几组

  • 开发者 (29.2%)
  • 研究科学家 (27.8%) 和应用科学家 (15.3%)
  • 数据科学家 (22.2%)、数据工程师 (15.3%) 和机器学习科学家 (12.5%)
  • 教授/讲师 (12.5%) 和学生 (11.1%)
  • 机器学习运营 (6.9%)、DevOps (5.6%) 和系统管理员 (4.2%)
  • 项目经理 (4.2%)

人们可以选择多个工作职能。


非常感谢所有参加调查的人,以及感谢Anaconda 的 Luc (Boaz) Douyon 对 conda 调查的支持,以及感谢PSF 的 Shamika Mohanan 对 Python 包裹调查摘要的支持。我们将在未来几年继续对 conda 社区进行调查。届时您将在本报告中看到结果。

Dave Clements,代表 conda 通信团队