这是由 Python Software Foundation 和 JetBrains 共同开展的第五次官方年度 Python 开发者调查。2021 年秋季,来自近 200 个国家/地区的超过 23,000 名 Python 开发者和爱好者参与了调查,揭示了该语言及其生态系统的现状。
过去 4 年里,使用 Python 作为主要语言的开发者比例一直保持在 84-85% 的水平。
JavaScript 是与 Python 一起使用的最受欢迎的语言。但是,对于使用 Python 作为辅助语言的开发者来说,C/C++ 几乎与 JavaScript 一样受欢迎。HTML/CSS、Bash/Shell 和 SQL 同样使用广泛,每种语言都有超过三分之一的 Python 开发者在使用。
Web 开发是指回答“您最常使用 Python 做什么?”这一问题时选择“Web 开发”的人群。数据科学是指同一问题下选择“数据分析”或“机器学习”的人群。
不出所料,在 Web 开发者中,与 Python 一起使用的最受欢迎的语言是 JavaScript (69%) 和 HTML/CSS (60%),而从事数据相关工作的开发者更常使用 SQL (42%)。另外,在从事数据相关工作的开发者中,不使用任何其他语言的开发者比例是 Web 开发者的三倍。
我们在这一部分提出了一些问题,试图了解人们使用 Python 的目的、参与的开发类型,及其结合多种用途的方式。
多年来,Python 的用例分布并没有太大变化。数据分析、机器学习、Web 开发和 DevOps 仍然是最流行的 Python 使用领域。
有四分之一使用 Python 作为主要语言的开发者主要将其用于 Web 开发。在使用 Python 作为辅助语言的开发者中,只有 12% 用于此目的。
有趣的是,报告显示,在将 Python 作为主要编程语言和辅助编程语言的开发者中,将数据分析作为 Python 的主要使用领域的比例几乎相同,分别为 17% 和 16%。
只有参与数据分析和机器学习的受访者回答了这个问题。
只有 29% 从事数据分析和机器学习的 Python 开发者认为自己是数据科学家。
平均而言,Python 2 用户的份额每年下降 5 个百分点,现在只有 5% 的开发者使用 Python 2。
有趣的是,与 Python 3 相比,Python 2 更常应用于计算机图形、游戏和移动开发。
注意:Enthought 的份额不到 0.5%,已被合并到“其他”中。
有超过半数的 Windows 用户从 Python.org 获得 Python,而在 Linux 用户中,只有三分之一这样做。不出所料,Linux 和 macOS 用户最常使用操作系统提供的选项来安装和更新 Python。同时,对于 macOS 用户,pyenv 和 Docker 容器也是相当流行的获取 Python 的方法。
在 Python 开发者中,有 75% 使用某些工具来隔离 Python 环境。有趣的是,Conda 是使用 Jupyter Notebook 的开发者中最受欢迎的工具 (50%),而其他开发者更喜欢 Virtualenv 和 Docker。
Flask、Django 和 FastAPI 仍然是排名前三的 Python Web 框架。FastAPI 最初于 2018 年底发布,它的增长速度最快,与上一年相比增长了 9 个百分点。与此同时,与 2020 年相比,Flask 的用户份额下降了 5 个百分点。
您可以在 2021 Django 开发者调查中找到关于 Django 框架概况的更多信息,该调查是与 Django Software Foundation 合作进行的。
有 10% 的 Python 开发者同时使用 7 个或更多数据科学框架和库,而约半数开发者使用 2 个或更少框架。
大多数其他框架在 Web 开发者中比在数据科学家中更受欢迎,后者使用 Tkinker 和 PyQT 的频率要高得多。
不同 Python 单元测试框架的受欢迎度与去年相比几乎保持不变。
虽然仅 56% 的独立开发者使用单元测试框架,但在员工人数不低于 5,000 的公司中,75% 的受访者报告说他们使用单元测试框架。
SQLAlchemy 是所有数据库用户中最受欢迎的 ORM。
有趣的是,52% 的 Redis 用户使用 Django ORM,而总体上,它在 Python 开发者中的使用比例不到三分之一。同样值得注意的是,20% 的 Amazon Redshift 用户使用 SQLObject,而在普通人群中,这个数字只有 5% 左右。
在数据科学家中,80% 的人使用数据库,而在 Web 开发者,98% 的人使用数据库。
与从事数据科学的开发者相比,从事 Web 开发的开发者使用 PostgreSQL 的频率要高 32 个百分点,使用 Redis 的频率要高 25 个百分点,使用 SQLite 的频率要高 12 个百分点。与此同时,数据科学家报告显示,他们使用 Oracle Database 的比例是 Web 开发者的两倍。
大数据工具的分布与上一年相比基本持平。总体上,数据科学家使用它们的频率比其他开发者要高出 13 个百分点,而 Apache Spark 的受欢迎度大约是 Dask 的两倍。
Python 开发者使用云平台。
只有使用云平台的受访者回答了这个问题。
有趣的是,总体上,Visual Basic、C# 和 C/C++ 用户使用 AWS 的频率几乎是 Python 开发者的一半。
只有使用云平台的受访者回答了这个问题。
虚拟机的受欢迎度继续下降。虽然在 2018 年,它们所占的份额为 47%,是最受欢迎的选择,但现在只有 41% 的 Python 开发者使用它们。
只有使用云平台的受访者回答了这个问题。
使用 virtualenv 的本地 Python 开发在从事 Web 开发、DevOps 和软件原型设计的开发者中极其受欢迎 (61-65%)。Docker 容器的使用在 Web 开发者中最受欢迎 (54%)。
虚拟机在从事 DevOps、机器学习和网络编程的开发者中广泛使用 (26-27%)。有趣的是,从事 DevOps 和机器学习的开发者使用远程开发环境的频率要高于所有其他受访者。
与 2020 年相比,Linux 和 macOS 的受欢迎度各下降了 5 个百分点,而 Windows 的使用率上升了 10 个百分点。
GitHub Actions 于 2018 年推出,并迅速受到欢迎,现在在 CI 系统名单中排名第一,被将近三分之一的 Python 开发者使用。
另一个不断增长的 CI 系统是 GitLab CI,自 2018 年起,它的使用率上升了 4 个百分点。同时,Travis CI 的受欢迎度迅速下降,比 2018 年下降了 13%。Jenkins/Hudson 在三年内也下降了 8 个百分点。
Python 程序员使用文档工具。最受欢迎的是 Sphinx。
使用 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,我们提出了一个单选问题“您为当前的 Python 开发使用的主要编辑器是什么?”。
Web 开发是指回答“您最常使用 Python 做什么?”这一问题时选择“Web 开发”的人群。数据科学是指同一问题下选择“数据分析”或“机器学习”的人群。
Python 开发者了解其主要 IDE 的最常见方式是通过学习活动、朋友/同事推荐或搜索引擎。
有趣的是,只有 1% 的受访者称广告是发现该工具的一个来源。
57% 的使用 Jupyter Notebook 的人先在学校/大学或在线课程中了解到该工具,总体而言,25% 的受访者了解其工具的方式相同。
除了主要 IDE 之外,VS Code、Jupyter Notebook 和 PyCharm 是最受欢迎的选择,每一个都有超过 20% 的 Python 开发者使用。
除了主要 IDE 之外,VS Code、Jupyter Notebook 和 PyCharm 是最受欢迎的选择,每一个都有超过 20% 的 Python 开发者使用。
使用 Jupyter Notebook 作为主要 IDE 的人使用 Spyder 的频率大约是其他 Python 开发者的四倍。
2021 年,Python Software Foundation 任命了一名新的常驻开发者,全职从事 Python 编程语言的工作并支持其开发者社区。
核心开发者 Łukasz Langa 在 7 月被聘为 CPython DIR。 Langa 正在努力帮助清理积压工作,调查项目优先事项,并研究其他感兴趣的领域。
23% 的 Python 开发者已经知道常驻开发者角色,其中 91% 的人认为这个举措很好。
此外,30% 了解常驻开发者角色的开发者已经看到了这一创新产生的影响。
只有 19% 的 Python 用户曾经报告过它的错误。有趣的是,使用 bugs.python.org 并不是最受欢迎的报告方式 – 大约有此方式两倍的程序员更喜欢在其他地方询问或向 GitHub 提交拉取请求。
在报告错误的人中,73% 的人的问题得到解决,只有 7% 的受访者表示他们从未收到任何人的回复。
只有报告过问题的受访者回答了这个问题。
Python 开发者使用容器,其中的 59% 在容器中使用虚拟环境。
45% 的 Python 开发者使用一些工具来固定应用程序依赖项的版本。 最常见的方式是将其存储在 requirements.txt 中,有四分之三的开发者都采用这种方式。
只有使用某些工具来管理应用程序依赖项的精确/确切版本的受访者回答了这个问题。
只有使用某些工具来管理应用程序依赖项的精确/确切版本的受访者回答了这个问题。
90% 的开发者报告说他们使用 pip 来安装 Python 软件包。 Python Package Index 是最常用来获取软件包的地方。
Python 开发者表示他们开发应用程序,而 Setuptools 是用于此目的的最受欢迎的工具,有 46% 的开发者使用。
只有开发应用程序的受访者回答了这个问题。
虽然有超过一半的 Python 用户开发应用程序,但其中只有 40% 的人已经将这些应用发布到软件包仓库。
只有开发 Python 库的受访者回答了这个问题。
34% 的受访者开发 Python 库,对他们来说,Setuptools 是最常用的打包方式,有 71% 的人使用。
有趣的是,只有 27% 的 Python 库开发者已经将它们发布到软件包仓库。
只有发布了打包 Python 库的受访者回答了这个问题。
Python Package Index 是发布已开发库和应用程序软件包的最常用地方,而私有 PyPI 的使用频率大约是前者的一半。
只有在公司工作的受访者回答了这个问题。
只有在公司工作的受访者回答了这个问题。
只有在公司工作的受访者回答了这个问题。
只有在公司工作的受访者回答了这个问题。
只有有工作的受访者回答了这个问题。
所有不足 1% 的国家/地区都已合并到“其他”。
想进一步挖掘数据吗?下载匿名调查回复,看看您能了解到什么! 在 Twitter 上使用话题标签 #pythondevsurvey 提及 @jetbrains 和 @ThePSF,分享您的发现和见解。
数据集仅包括来自官方 Python Software Foundation 渠道的回复。滤除重复和不可信的回复后,数据集包括了 2021 年 10 月 11 日至 12 月 6 日期间通过 python.org、PSF 博客、PSF 的 Twitter 和 LinkedIn 帐户、官方 Python 邮寄名单和 Python 相关子版块上的调查推广收集的超过 23,000 份回复。 为了防止调查偏向于任何特定的工具或技术,未使用任何与产品、服务或供应商相关的渠道收集回复。
数据均已匿名处理,不含个人信息或详细地理位置信息。为了防止经逐字评论识别任何个别受访者身份,已删除所有开放式字段。
为了帮助您更好地理解调查的逻辑,我们将共享数据集、调查问题和调查逻辑。我们对答案选项采用了不同的排序方式(字母排序、随机排序和直接排序),每个问题的答案顺序都经过特殊指定。
至少满足以下两项:
我们再次代表 Python Software Foundation 和 JetBrains 感谢参与本次调查的所有人。在你们的帮助下,我们得以更准确地描绘 Python 社区的概况!
为 PSF 的经常性捐款活动做出贡献。 PSF 是一个完全由赞助商、会员和公众支持的非营利组织。
我们希望您觉得我们的报告很有用。与您的朋友和同事分享这份报告。
如果您对本次调查有任何疑问或对未来的调查有任何建议,请发送电子邮件至 surveys@jetbrains.com 或 psf@python.org 与我们联系。