查看 2020201920182017 年的 Python 开发者调查结果。

一般 Python 使用情况

Python 作为主要语言与作为辅助语言

过去 4 年里,使用 Python 作为主要语言的开发者比例一直保持在 84-85% 的水平。

Python 与其他语言的使用100+

2021 年
2020 年
40%/41%38%/38%33%/35%33%/33%30%/29%20%/20%11%/11%10%/9%9%/8%9%/10%6%/5%5%/6%4%/4%3%/3%
所有结果

JavaScript 是与 Python 一起使用的最受欢迎的语言。但是,对于使用 Python 作为辅助语言的开发者来说,C/C++ 几乎与 JavaScript 一样受欢迎。HTML/CSS、Bash/Shell 和 SQL 同样使用广泛,每种语言都有超过三分之一的 Python 开发者在使用。

适用于 Web 和数据科学的语言100+

数据科学
Web 开发
42%/49%37%/45%36%/69%34%/60%33%/19%20%/16%14%/2%11%/10%9%/22%8%/11%6%/15%6%/8%4%/2%3%/4%18%/15%9%/3%

Web 开发是指回答“您最常使用 Python 做什么?”这一问题时选择“Web 开发”的人群。数据科学是指同一问题下选择“数据分析”或“机器学习”的人群。

不出所料,在 Web 开发者中,与 Python 一起使用的最受欢迎的语言是 JavaScript (69%) 和 HTML/CSS (60%),而从事数据相关工作的开发者更常使用 SQL (42%)。另外,在从事数据相关工作的开发者中,不使用任何其他语言的开发者比例是 Web 开发者的三倍。

使用 Python 的目的

我们在这一部分提出了一些问题,试图了解人们使用 Python 的目的、参与的开发类型,及其结合多种用途的方式。

您主要出于什么目的使用 Python?

2020 年和 2021 年 Python 的使用100+

2021 年
2020 年
51%/54%45%/48%36%/38%36%/38%31%/35%27%/27%26%/28%22%/23%19%/19%18%/19%12%/13%10%/9%7%/9%6%/6%5%/5%7%/7%

多年来,Python 的用例分布并没有太大变化。数据分析、机器学习、Web 开发和 DevOps 仍然是最流行的 Python 使用领域。

Python 作为主要语言与作为辅助语言的使用100+

Python 是主要语言
Python 是辅助语言
52%/46%48%/32%37%/30%35%/37%32%/28%27%/25%27%/22%21%/24%19%/17%18%/18%12%/13%11%/10%7%/9%6%/5%5%/5%7%/6%

您参与以下活动的程度如何?

主要活动
次要活动
爱好
62%23%14%47%38%16%45%32%23%42%49%8%41%43%16%40%48%12%39%28%33%36%34%31%36%30%34%36%43%21%30%40%30%27%35%38%24%36%39%24%39%37%19%17%64%74%12%15%Web 开发数据分析机器学习软件测试/编写自动化测试软件原型设计DevOps/系统管理/编写自动化脚本教育目的桌面开发嵌入式开发网络编程移动开发多媒体应用程序开发计算机图形Web 解析器/采集器/抓取工具编程游戏开发其他

您最常使用 Python 做什么?100+

2021 年
2020 年
23%/25%17%/17%11%/13%10%/10%9%/7%5%/4%4%/4%4%/4%3%/3%3%/3%2%/1%1%/1%1%/1%1%/1%1%/0%6%/5%

有四分之一使用 Python 作为主要语言的开发者主要将其用于 Web 开发。在使用 Python 作为辅助语言的开发者中,只有 12% 用于此目的。

有趣的是,报告显示,在将 Python 作为主要编程语言和辅助编程语言的开发者中,将数据分析作为 Python 的主要使用领域的比例几乎相同,分别为 17% 和 16%。

您是否认为自己是数据科学家?

其他
66%29%5%

只有参与数据分析和机器学习的受访者回答了这个问题。

只有 29% 从事数据分析和机器学习的 Python 开发者认为自己是数据科学家。

Python 版本

Python 3 与 Python 2

Python 3
Python 2
95%5%94%6%90%10%84%16%75%25%2021 年2020 年2019 年2018 年2017 年

平均而言,Python 2 用户的份额每年下降 5 个百分点,现在只有 5% 的开发者使用 Python 2。

有趣的是,与 Python 3 相比,Python 2 更常应用于计算机图形、游戏和移动开发。

Python 版本用例100+

Python 3
Python 2
54%/31%48%/24%38%/27%38%/16%34%/14%28%/18%27%/23%23%/12%19%/14%18%/19%11%/24%9%/17%8%/7%5%/12%4%/7%7%/5%

Python 3 版本

Python 3.5 或更低版本2%Python 3.67%Python 3.713%Python 3.827%Python 3.935%Python 3.1016%

Python 安装和升级100+

38%28%16%16%15%6%5%3%1%1%1%3%12%

注意:Enthought 的份额不到 0.5%,已被合并到“其他”中。

有超过半数的 Windows 用户从 Python.org 获得 Python,而在 Linux 用户中,只有三分之一这样做。不出所料,Linux 和 macOS 用户最常使用操作系统提供的选项来安装和更新 Python。同时,对于 macOS 用户,pyenv 和 Docker 容器也是相当流行的获取 Python 的方法。

Python 环境隔离100+

50%31%20%16%11%5%4%25%

在 Python 开发者中,有 75% 使用某些工具来隔离 Python 环境。有趣的是,Conda 是使用 Jupyter Notebook 的开发者中最受欢迎的工具 (50%),而其他开发者更喜欢 Virtualenv 和 Docker。

框架和库

Web 框架100+

41%40%21%4%3%3%3%3%2%1%5%29%

Flask、Django 和 FastAPI 仍然是排名前三的 Python Web 框架。FastAPI 最初于 2018 年底发布,它的增长速度最快,与上一年相比增长了 9 个百分点。与此同时,与 2020 年相比,Flask 的用户份额下降了 5 个百分点。

您可以在 2021 Django 开发者调查中找到关于 Django 框架概况的更多信息,该调查是与 Django Software Foundation 合作进行的。

数据科学框架和库100+

60%55%43%30%29%23%18%17%16%10%3%1%1%4%27%

10% 的 Python 开发者同时使用 7 个或更多数据科学框架和库,而约半数开发者使用 2 个或更少框架。

其他框架和库100+

52%31%24%19%15%14%14%13%9%7%6%4%3%3%7%19%

大多数其他框架在 Web 开发者中比在数据科学家中更受欢迎,后者使用 Tkinker 和 PyQT 的频率要高得多。

单元测试框架100+

50%25%11%6%5%4%3%1%38%

不同 Python 单元测试框架的受欢迎度与去年相比几乎保持不变。

虽然仅 56% 的独立开发者使用单元测试框架,但在员工人数不低于 5,000 的公司中,75% 的受访者报告说他们使用单元测试框架。

ORM100+

34%29%16%5%3%2%1%1%4%36%

SQLAlchemy 是所有数据库用户中最受欢迎的 ORM。

有趣的是,52% 的 Redis 用户使用 Django ORM,而总体上,它在 Python 开发者中的使用比例不到三分之一。同样值得注意的是,20% 的 Amazon Redshift 用户使用 SQLObject,而在普通人群中,这个数字只有 5% 左右。

数据库100+

43%38%37%20%18%10%6%3%2%2%1%1%1%1%6%19%

在数据科学家中,80% 的人使用数据库,而在 Web 开发者,98% 的人使用数据库。

与从事数据科学的开发者相比,从事 Web 开发的开发者使用 PostgreSQL 的频率要高 32 个百分点,使用 Redis 的频率要高 25 个百分点,使用 SQLite 的频率要高 12 个百分点。与此同时,数据科学家报告显示,他们使用 Oracle Database 的比例是 Web 开发者的两倍。

大数据工具100+

11%9%5%5%4%2%2%2%1%1%2%75%

大数据工具的分布与上一年相比基本持平。总体上,数据科学家使用它们的频率比其他开发者要高出 13 个百分点,而 Apache Spark 的受欢迎度大约是 Dask 的两倍。

云平台

61%

Python 开发者使用云平台。

最热门云平台100+

50%32%23%23%17%12%5%5%4%1%9%

只有使用云平台的受访者回答了这个问题。

有趣的是,总体上,Visual Basic、C# 和 C/C++ 用户使用 AWS 的频率几乎是 Python 开发者的一半。

您如何在云中运行代码?100+

2021 年
2020 年
48%/47%41%/43%27%/27%24%/25%2%/2%11%/11%

只有使用云平台的受访者回答了这个问题。

虚拟机的受欢迎度继续下降。虽然在 2018 年,它们所占的份额为 47%,是最受欢迎的选择,但现在只有 41% 的 Python 开发者使用它们。

您如何进行云开发?100+

2021 年
2020 年
53%/56%41%/40%20%/21%19%/17%18%/18%9%/8%1%/1%10%/9%

只有使用云平台的受访者回答了这个问题。

使用 virtualenv 的本地 Python 开发在从事 Web 开发、DevOps 和软件原型设计的开发者中极其受欢迎 (61-65%)。Docker 容器的使用在 Web 开发者中最受欢迎 (54%)。

虚拟机在从事 DevOps、机器学习和网络编程的开发者中广泛使用 (26-27%)。有趣的是,从事 DevOps 和机器学习的开发者使用远程开发环境的频率要高于所有其他受访者。

开发工具

操作系统100+

Linux63%Windows58%macOS25%BSD2%其他1%

与 2020 年相比,Linux 和 macOS 的受欢迎度各下降了 5 个百分点,而 Windows 的使用率上升了 10 个百分点。

持续集成 (CI) 系统100+

31%22%17%5%5%4%2%2%1%1%5%39%

GitHub Actions 于 2018 年推出,并迅速受到欢迎,现在在 CI 系统名单中排名第一,被将近三分之一的 Python 开发者使用。

另一个不断增长的 CI 系统是 GitLab CI,自 2018 年起,它的使用率上升了 4 个百分点。同时,Travis CI 的受欢迎度迅速下降,比 2018 年下降了 13%。Jenkins/Hudson 在三年内也下降了 8 个百分点。

36%

Python 程序员使用文档工具。最受欢迎的是 Sphinx。

文档工具100+

适用于 Python 开发的工具和功能

至少有时
从不或几乎从不
89%11%87%13%87%13%85%15%79%21%77%23%75%25%74%26%74%26%64%36%62%38%61%39%50%50%43%57%41%59%在编辑器中使用自动补全重构代码使用版本控制系统为项目使用 Python 虚拟环境使用代码 lint 分析为代码编写测试使用 SQL 数据库使用可选的类型提示使用调试器在远程机器上运行/调试或编辑代码使用持续集成工具使用问题跟踪器使用代码覆盖率使用 Python 分析器使用 NoSQL 数据库

使用 Python 作为主要语言的开发者在项目中使用 Python 分析器和代码覆盖率的频率要比使用 Python 作为辅助语言的开发者高 8 个百分点,使用 Python 虚拟环境的频率高 10 个百分点。

编辑器

PyCharm Community Edition 和 Professional Edition 的组合份额为 31%,这一结果与去年接近。VS Code 与去年相比增长了 6 个百分点。

有趣的是,PyCharm 和 VS Code 在 Web 开发者中的受欢迎水平相当 (39%),而数据科学家更喜欢使用 VS Code 作为他们的主要 IDE,这一比例要高出 9 个百分点。

主要 IDE/编辑器100+

35%31%7%3%3%2%2%2%2%2%2%2%3%3%

为了确定最受欢迎的编辑器和 IDE,我们提出了一个单选问题“您为当前的 Python 开发使用的主要编辑器是什么?”。

数据科学与 Web 开发100+

数据科学
Web 开发
36%/39%27%/39%5%/7%2%/1%2%/2%2%/2%2%/3%21%/3%

Web 开发是指回答“您最常使用 Python 做什么?”这一问题时选择“Web 开发”的人群。数据科学是指同一问题下选择“数据分析”或“机器学习”的人群。

您最初是如何了解您的主要 IDE/编辑器的?

23%16%14%13%11%8%7%2%1%4%

Python 开发者了解其主要 IDE 的最常见方式是通过学习活动、朋友/同事推荐或搜索引擎。

有趣的是,只有 1% 的受访者称广告是发现该工具的一个来源。

57% 的使用 Jupyter Notebook 的人先在学校/大学或在线课程中了解到该工具,总体而言,25% 的受访者了解其工具的方式相同。

使用的 IDE/编辑器数量

116%237%325%413%≥58%

除了主要 IDE 之外,VS Code、Jupyter Notebook 和 PyCharm 是最受欢迎的选择,每一个都有超过 20% 的 Python 开发者使用。

主要 IDE/编辑器的使用频率

每天83%每周13%每月2%频率更低2%

除主要 IDE/编辑器外使用的 IDE/编辑器100+

26%25%23%21%13%12%12%9%6%5%3%3%2%1%5%16%

除了主要 IDE 之外,VS Code、Jupyter Notebook 和 PyCharm 是最受欢迎的选择,每一个都有超过 20% 的 Python 开发者使用。

使用 Jupyter Notebook 作为主要 IDE 的人使用 Spyder 的频率大约是其他 Python 开发者的四倍。

让 Python 变得更好

您知道吗?

2021 年,Python Software Foundation 任命了一名新的常驻开发者,全职从事 Python 编程语言的工作并支持其开发者社区。

核心开发者 Łukasz Langa 在 7 月被聘为 CPython DIR。 Langa 正在努力帮助清理积压工作,调查项目优先事项,并研究其他感兴趣的领域。

您如何看待新的
常驻开发者角色?

23% 的 Python 开发者已经知道常驻开发者角色,其中 91% 的人认为这个举措很好。

此外,30% 了解常驻开发者角色的开发者已经看到了这一创新产生的影响。

报告问题

只有 19% 的 Python 用户曾经报告过它的错误。有趣的是,使用 bugs.python.org 并不是最受欢迎的报告方式 – 大约有此方式两倍的程序员更喜欢在其他地方询问或向 GitHub 提交拉取请求。

在报告错误的人中,73% 的人的问题得到解决,只有 7% 的受访者表示他们从未收到任何人的回复。

您是否尝试过报告您的问题?

9%8%4%2%1%81%

您的问题解决了吗?

47%26%18%7%3%

只有报告过问题的受访者回答了这个问题。

Python 打包

63%

Python 开发者使用容器,其中的 59% 在容器中使用虚拟环境。

您在容器中使用虚拟环境吗?

不,我不在容器中使用虚拟环境
不,我不使用容器
是的,我在容器中使用虚拟环境
37%37%26%

您直接使用哪些与 Python 打包
相关的工具?100+

81%32%30%23%22%13%13%11%10%6%2%1%0%2%7%

您是否使用标准库模块 venv?100+

42%23%11%11%4%1%23%11%

应用程序依赖项

45% 的 Python 开发者使用一些工具来固定应用程序依赖项的版本。 最常见的方式是将其存储在 requirements.txt 中,有四分之三的开发者都采用这种方式。

您是否使用任何工具来管理应用程序依赖项的精确/确切版本?

55%45%

您的应用程序依赖项信息以什么格式存储?100+

76%26%22%16%11%4%5%3%

只有使用某些工具来管理应用程序依赖项的精确/确切版本的受访者回答了这个问题。

您是否使用任何自动化服务来更新应用程序依赖项的版本?100+

24%10%6%2%65%

您使用哪些工具来管理应用程序依赖项?100+

poetry27%pipenv26%pip-tools26%其他4%33%

只有使用某些工具来管理应用程序依赖项的精确/确切版本的受访者回答了这个问题。

软件包安装

90% 的开发者报告说他们使用 pip 来安装 Python 软件包。 Python Package Index 是最常用来获取软件包的地方。

您从哪里安装软件包?100+

81%33%17%16%15%11%10%10%9%8%4%3%2%9%

您使用哪种(哪些)工具来安装软件包?100+

90%21%13%5%5%2%3%3%
55%

Python 开发者表示他们开发应用程序,而 Setuptools 是用于此目的的最受欢迎的工具,有 46% 的开发者使用。

您使用哪些工具来开发
Python 应用程序?100+

46%30%18%17%5%2%1%1%1%1%4%28%

只有开发应用程序的受访者回答了这个问题。

虽然有超过一半的 Python 用户开发应用程序,但其中只有 40% 的人已经将这些应用发布到软件包仓库。

您使用哪些工具来创建
Python 库的软件包?100+

71%42%26%20%5%3%1%1%1%1%3%

只有开发 Python 库的受访者回答了这个问题。

34% 的受访者开发 Python 库,对他们来说,Setuptools 是最常用的打包方式,有 71% 的人使用。

有趣的是,只有 27% 的 Python 库开发者已经将它们发布到软件包仓库。

您曾在哪里发布打包的
Python 库?100+

只有发布了打包 Python 库的受访者回答了这个问题。

Python Package Index 是发布已开发库和应用程序软件包的最常用地方,而私有 PyPI 的使用频率大约是前者的一半。

统计数据

团队工作与独立工作

参与项目

就业状况

62%14%6%6%6%4%1%2%

公司规模

7%12%17%24%7%10%19%3%

只有在公司工作的受访者回答了这个问题。

团队规模

2-7 人72%8-12 人17%13-20 人6%21-40 人3%超过 40 人2%

只有在公司工作的受访者回答了这个问题。

公司行业

41%7%7%5%4%4%3%
所有结果

只有在公司工作的受访者回答了这个问题。

目标行业

51%4%3%3%3%3%3%
所有结果

只有在公司工作的受访者回答了这个问题。

工作角色100+

72%17%17%17%9%7%6%5%5%5%4%4%13%

只有有工作的受访者回答了这个问题。

年龄范围

18-20 岁10%21-29 岁38%30-39 岁29%40-49 岁13%50-59 岁6%60 岁或以上3%

Python 经验

不足 1 年23%1–2 年23%3–5 年29%6–10 年15%11 年以上10%

专业编码经验

不足 1 年36%1–2 年19%3–5 年19%6–10 年11%11 年以上15%

您在哪个国家/地区?

所有不足 1% 的国家/地区都已合并到“其他”。

17%9%7%6%5%5%4%3%3%3%2%2%2%2%
所有结果

方法和原始数据

想进一步挖掘数据吗?下载匿名调查回复,看看您能了解到什么! 在 Twitter 上使用话题标签 #pythondevsurvey 提及 @jetbrains@ThePSF,分享您的发现和见解。

在剖析这些数据之前,请注意以下重要信息:

数据集仅包括来自官方 Python Software Foundation 渠道的回复。滤除重复和不可信的回复后,数据集包括了 2021 年 10 月 11 日至 12 月 6 日期间通过 python.orgPSF 博客PSF 的 TwitterLinkedIn 帐户、官方 Python 邮寄名单和 Python 相关子版块上的调查推广收集的超过 23,000 份回复。 为了防止调查偏向于任何特定的工具或技术,未使用任何与产品、服务或供应商相关的渠道收集回复。

数据均已匿名处理,不含个人信息或详细地理位置信息。为了防止经逐字评论识别任何个别受访者身份,已删除所有开放式字段。

为了帮助您更好地理解调查的逻辑,我们将共享数据集、调查问题和调查逻辑。我们对答案选项采用了不同的排序方式(字母排序、随机排序和直接排序),每个问题的答案顺序都经过特殊指定。

按以下标准对回复进行过滤

  • 未满 18 岁。
  • 没有回答到调查第三页上的“您有多少年的专业编码经验?”这个问题。
  • 年龄在 21 岁以下,并拥有 11 年以上的专业编码经验。
  • 多项选择题的单选回答太多(不包括回答“无”)。
  • 来自相同电子邮件地址的回复(只保留其中一份)。
  • 来自同一 IP 地址的相似回复。

至少满足以下两项:

    • 使用超过 16 种编程语言。
    • 超过 9 种工作角色。
    • Python 的使用目的超过 11 个( “您使用 Python 做什么?”)。
    • 所选国家/地区按字母顺序排在列表顶部,不在热门国家/地区之列,并且与 IP 检测到的国家/地区不同。
    • 同时担任首席执行官和技术支持工作角色。
    • 担任首席执行官但年龄未满 21 岁。
    • 总体选择的答案太多(几乎使用了数据科学、Web 开发、打包等的所有框架)。
    • 回答太快(每个问题不到 6 秒)。

我们再次代表 Python Software Foundation 和 JetBrains 感谢参与本次调查的所有人。在你们的帮助下,我们得以更准确地描绘 Python 社区的概况!

为 PSF 的经常性捐款活动做出贡献。 PSF 是一个完全由赞助商、会员和公众支持的非营利组织。

查看 2020201920182017 年的 Python 开发者调查结果。

探索 JetBrains 的其他大型调查报告

感谢您的参与!

我们希望您觉得我们的报告很有用。与您的朋友和同事分享这份报告。

参加今后的调查:

如果您对本次调查有任何疑问或对未来的调查有任何建议,请发送电子邮件至 surveys@jetbrains.com 或 psf@python.org 与我们联系。