JetBrains logo

Check out the Python Developer Survey results in 202020192018, and 2017.

General Python Usage

Python as main vs secondary language

84%

Main

16%

Secondary

For the last 4 years the share of developers who use Python as their main language remains at the pretty same level of 84-85%.

Python usage with other languages100+

40%

41%

JavaScript

38%

38%

HTML/CSS

33%

35%

Bash / Shell

33%

33%

SQL

30%

29%

C/C++

20%

20%

Java

11%

11%

C#

10%

9%

TypeScript

9%

8%

Go

9%

10%

PHP

6%

5%

Rust

5%

6%

R

4%

4%

Visual Basic

3%

3%

Kotlin

JavaScript is the most popular language used together with Python. However, for developers who use Python as a secondary language, C/C++ are about as popular as JavaScript. HTML/CSS, Bash/Shell, and SQL are also widespread, each being used by more than a third of Python developers.

Languages for Web and Data Science100+

42%

49%

SQL

37%

45%

Bash / Shell

36%

69%

JavaScript

34%

60%

HTML/CSS

33%

19%

C/C++

Web development refers to people who selected “Web development” in response to the question “What do you use Python for the most?”. Data science refers to people who selected “Data analysis” or “Machine Learning” in the same question.

Unsurprisingly, the most popular languages used along with Python by web developers are JavaScript (69%) and HTML/CSS (60%), while developers involved in data-related tasks more often use SQL (42%). Also, the share of developers who don’t use any additional languages is three times higher among those who are involved in data-related tasks, compared to web developers.

Purposes for Using Python

In this section, we asked questions to find out what people use Python for, what types of development they are involved in, and how they combine their various uses.

For what purposes do you mainly use Python?

52%

Both for work and personal

29%

For personal, educational or side projects

19%

For work

Python usage in 2020 and 2021100+

51%

54%

Data analysis

45%

48%

Web development

36%

38%

DevOps / System administration / Writing automation scripts

36%

38%

Machine learning

31%

35%

Programming of web parsers / scrapers / crawlers

There are no great changes in the distribution of Python use cases over the years. Data analysis, machine learning, web development, and DevOps are still the most popular fields for Python usage.

Python usage as main and secondary language100+

52%

46%

Data analysis

48%

32%

Web development

37%

30%

Machine learning

35%

37%

DevOps / System administration / Writing automation scripts

32%

28%

Programming of web parsers / scrapers / crawlers

To what extent are you involved in the following activities?

Web development

Data analysis

Machine learning

Software testing / Writing automated tests

Software prototyping

DevOps / System administration / Writing automation scripts

Educational purposes

Desktop development

Embedded development

Network programming

Mobile development

Multimedia applications development

Computer graphics

Programming of web parsers / scrapers / crawlers

Game development

Other

What do you use Python for the most?100+

23%

25%

Web development

17%

17%

Data analysis

11%

13%

Machine learning

10%

10%

DevOps / System administration / Writing automation scripts

9%

7%

Educational purposes

A quarter of developers who use Python as their main language primarily use it for web development. Among those for whom Python is a secondary language, only 12% do so.

Interestingly, data analysis as a primary field for Python usage is reported by nearly the same share of developers both for whom it is the main programming language (17%) and as a secondary one (16%).

Do you consider yourself a Data Scientist?

This question was only answered by respondents who are involved in Data analysis and Machine learning.

Only 29% of the Python developers involved in data analysis and machine learning consider themselves to be Data Scientists.

Python Versions

Python 3 vs. Python 2

2021

2020

2019

2018

2017

On average, the share of Python 2 users decreases by 5 percentage points each year, and now only 5 developers out of 100 use it.

It is interesting that compared to Python 3, Python 2 is more often applied to computer graphics, games, and mobile development.

Python version use cases100+

54%

31%

Data analysis

48%

24%

Web development

38%

27%

DevOps / System administration / Writing automation scripts

38%

16%

Machine learning

34%

14%

Programming of web parsers / scrapers / crawlers

Python 3 versions

2%

Python 3.5 or lower

7%

Python 3.6

13%

Python 3.7

27%

Python 3.8

35%

Python 3.9

16%

Python 3.10

Python installation and upgrade100+

38%

Python.org

28%

OS-provided Python (via apt-get, yum, homebrew, etc.)

16%

Docker containers

16%

Anaconda

15%

pyenv

6%

Build from source

5%

Somebody else manages Python updates for me

3%

Automatic upgrade via cloud provider

1%

ActivePython

1%

Intel Distribution for Python

1%

pythonz

3%

Other

12%

I don’t update

Note: Enthought got less than 0.5% and has been merged to Others.

More than half of Windows users get Python from Python.org, while among Linux users only a third do so. Unsurprisingly, Linux and macOS users most often install and update Python using OS-provided options. At the same time, for macOS users, pyenv and Docker containers are also fairly popular ways of getting Python.

Python environment isolation100+

50%

Virtualenv

31%

Docker

20%

Conda

16%

Pipenv

11%

Poetry

5%

Vagrant / virtual machines

4%

Other

25%

None

Among Python developers, 75% use some tools to isolate Python environments. Interestingly, Conda is the most popular tool for it among developers who use Jupyter Notebook (50%), while other developers prefer Virtualenv and Docker.

Frameworks and Libraries

Web frameworks100+

41%

Flask

40%

Django

21%

FastAPI

4%

Tornado

3%

web2py

3%

Bottle

3%

CherryPy

3%

Pyramid

2%

Falcon

1%

Hug

5%

Other

29%

None

Flask, Django, and FastAPI are still the top-3 Python web frameworks. FastAPI, initially released at the end of 2018, shows the fastest growth, having grown by 9 percentage points compared to the previous year. At the same time, compared to 2020, the share of Flask users decreased by 5 percentage points.

You can find more about the Django framework landscape in the Django Developers Survey 2021, conducted in partnership with Django Software Foundation.

Data science frameworks and libraries100+

60%

NumPy

55%

Pandas

43%

Matplotlib

30%

SciPy

29%

SciKit-Learn

23%

TensorFlow

18%

PyTorch

17%

Seaborn

16%

Keras

10%

NLTK

3%

Gensim

1%

MXNet

1%

Theano

4%

Other

27%

None

10% of Python developers simultaneously use 7 or more data science frameworks and libraries, while about a half of them use 2 or fewer frameworks.

Other frameworks and libraries100+

52%

Requests

31%

Pillow

24%

Asyncio

19%

Tkinter

15%

PyQT

14%

Scrapy

14%

aiohttp

13%

Pygame

9%

httpx

7%

Six

6%

Kivy

4%

wxPython

3%

PyGTK

3%

Twisted

7%

Other

19%

None

The majority of other frameworks are more popular among web-developers than among data scientists, who use Tkinker and PyQT significantly more often.

Unit-testing frameworks100+

50%

pytest

25%

unittest

11%

mock

6%

tox

5%

doctest

4%

Hypothesis

3%

nose

1%

Other

38%

None

The popularity of different Python unit-testing frameworks remains nearly the same compared to last year.

While only 56% of solo-developers use them, 75% of respondents from companies of 5,000 or more employees report using unit-testing frameworks.

ORMs100+

34%

SQLAlchemy

29%

Django ORM

16%

Raw SQL

5%

SQLObject

3%

Peewee

2%

Tortoise ORM

1%

PonyORM

1%

Dejavu

4%

Other

36%

No database development

SQLAlchemy is the most popular ORM among all database users.

It is interesting that 52% of Redis users use Django ORM, while generally it is used by less than a third of Python devs. Also noteworthy is that 20% of Amazon Redshift users use SQLObject, while in the general population this number is only about 5%.

Databases100+

43%

PostgreSQL

38%

SQLite

37%

MySQL

20%

MongoDB

18%

Redis

10%

MS SQL Server

6%

Oracle Database

3%

Amazon Redshift

2%

Neo4j

2%

Cassandra

1%

DB2

1%

HBase

1%

h2

1%

Couchbase

6%

Other

19%

None

Among data scientists 80% use databases, while among web developers 98% do so.

Those who are involved in web development use PostgreSQL 32 percentage points more often, Redis 25 ​​percentage points more often, and SQLite 12 percentage points more often than those who are involved in data science. At the same time, data scientists report to use Oracle Database twice more often than web developers.

Big Data tools100+

11%

Apache Spark

9%

Apache Kafka

5%

Dask

5%

Apache Hadoop/MapReduce

4%

Apache Hive

2%

ClickHouse

2%

Apache Flink

2%

Apache Beam

1%

Apache Tez

1%

Apache Samza

2%

Other

75%

None

The distribution of big data tools remains nearly the same compared to last year. Generally, data scientists use them 13 percentage points more often than other developers, and Apache Spark and Dask are about twice as popular among them.

Cloud platforms

61%

of Python developers use cloud platforms.

Top cloud platforms100+

50%

AWS

32%

Google Cloud Platform

23%

Microsoft Azure

23%

Heroku

17%

DigitalOcean

12%

PythonAnywhere

5%

Linode

5%

OpenStack

4%

OpenShift

1%

Rackspace

9%

Other

This question was only answered by respondents who use cloud platforms.

Interestingly, Visual Basic, C#, and C/C++ users use AWS nearly half as often as Python developers in general.

How do you run code in the cloud?100+

48%

47%

Within containers

41%

43%

In virtual machines

27%

27%

On a Platform-as-a-Service

24%

25%

Serverless

2%

2%

Other

This question was only answered by respondents who use cloud platforms.

Virtual machines continue to lose their popularity. While in 2018 they had a share of 47% and were the most popular choice, now only 41% of Python developers use them.

How do you develop for the cloud?100+

53%

56%

Locally with virtualenv

41%

40%

In Docker containers

20%

21%

In virtual machines

19%

17%

In remote development environments

18%

18%

With local system interpreter

This question was only answered by respondents who use cloud platforms.

Local Python development with virtualenv is extremely popular among those who are involved in web development, DevOps, and software prototyping (61-65%). Docker containers usage is mostly popular among web-devs (54%).

Virtual machines are widely used by developers involved in DevOps, machine learning, and network programming (26-27%). Interestingly, those involved in DevOps and machine learning also use remote development environments more often than all other respondents.

Development Tools

Operating system100+

63%

Linux

58%

Windows

25%

macOS

2%

BSD

1%

Other

Compared to 2020, Linux and macOS popularity decreased by 5 percentage points each, while Windows usage has risen by 10 percentage points.

Continuous integration (CI) systems100+

31%

GitHub Actions

22%

Gitlab CI

17%

Jenkins / Hudson

5%

Travis CI

5%

CircleCI

4%

Bitbucket Pipelines

2%

TeamCity

2%

Bamboo

1%

AppVeyor

1%

CruiseControl

5%

Other

39%

None

Introduced in 2018, GitHub Actions quickly gained popularity and now is in first place in the list of CI systems, being used by slightly less than a third of Python developers.

Another growing CI system is Gitlab CI – its usage has risen by 4 percentage points since 2018. At the same time, Travis CI is rapidly losing its popularity, with a decrease of 13% from 2018. Jenkins/Hudson have also lost 8 percentage points in three years.

36%

of Python programmers use documentation tools. The most popular one is Sphinx.

Documentation Tools100+

61%

Sphinx

22%

MKDocs

17%

Doxygen

14%

Other

Tools and Features for Python Development

use autocompletion in your editor

refactor your code

use Version Control Systems

use Python virtual environments for your projects

use code linting

write tests for your code

use SQL databases

use optional type hinting

use a debugger

run / debug or edit code on remote machines

use Continuous Integration tools

use Issue Trackers

use code coverage

use a Python profiler

use NoSQL databases

Those who use Python as a primary language use a Python profiler and code coverage 8 percentage points more frequently, and Python virtual environments 10 percentage points more frequently, for their projects than developers who use Python as a secondary language.

Editors

The combined share of the PyCharm Community and Professional editions is 31%, which is close to last year's result. VS Code has grown by 6 percentage points compared to last year.

Interestingly, PyCharm and VS Code are equally popular among web developers (39%), while data scientists prefer VS Code by 9 percentage points more as their main IDE.

Main IDE/Editor100+

35%

VS Code

31%

PyCharm

7%

Vim

3%

Jupyter Notebook

3%

Sublime Text

2%

IDLE

2%

Emacs

2%

IntelliJ IDEA

2%

Atom

2%

NotePad++

2%

Spyder

2%

JupyterLab

3%

Other

3%

None

To identify the most popular editors and IDEs, we asked a single-answer question “What is the main editor you use for your current Python development?”.

Data science vs. Web development100+

36%

39%

VS Code

27%

39%

PyCharm

5%

7%

Vim

2%

1%

Atom

2%

2%

Emacs

Web development refers to people who selected “Web development” in response to the question “What do you use Python for the most?”. Data science refers to people who selected “Data analysis” or “Machine Learning” in the same question.

How did you first learn about your main IDE/Editor?

23%

Friend / Colleague

16%

I don't remember

14%

School / University

13%

Search engines

11%

Online learning platform / Online course

8%

Technical review / Forum / Blog

7%

Social network

2%

Conference / User Group

1%

Advertising

4%

Other

The most popular ways Python developers learn about their main IDE are learning activities, their friends/colleagues recommendations, or search engines.

Interestingly, only 1% of respondents reported advertising was a source of discovering the tool.

57% of those using Jupyter Notebook first learn about it in School/University or on online courses, while overall 25% of respondents learn about their tool the same way.

Number of IDEs/Editors used

16%

1

37%

2

25%

3

13%

4

8%

5 and more

VS Code, Jupyter Notebook, and PyCharm are the most popular to use in addition to the main IDE, with each being used by more than 20% of Python developers.

Frequency of main IDE/Editor usage

83%

Daily

13%

Weekly

2%

Monthly

2%

Less frequently

IDEs/Editors used in addition to main IDE/Editor100+

26%

VS Code

25%

Jupyter Notebook

23%

PyCharm

21%

Vim

13%

NotePad++

12%

Sublime Text

12%

JupyterLab

9%

IDLE

6%

Atom

5%

Spyder

3%

IntelliJ IDEA

3%

Python Tools for Visual Studio (PTVS)

2%

Emacs

1%

Eclipse + Pydev

5%

Other

16%

None

VS Code, Jupyter Notebook, and PyCharm are the most popular to use in addition to the main IDE, with each being used by more than 20% of Python developers.

Those who use Jupyter Notebook as their main IDE additionally use Spyder about four times more often than other Python developers.

Making Python Better

Did you know?

In 2021, The Python Software Foundation appointed a new Developer-in-Residence to work full-time on the Python programming language and support its developer community.

Core developer Łukasz Langa was hired to the CPython DIR role in July. Langa is working to help clear the backlog, investigate project priorities, and look into other areas of interest.

What do you think about the new
Developer-in-Residence role?

14%

It seems good, but I haven’t seen any impact yet

7%

It seems good, and I am already seeing an impact

2%

I don’t like it

77%

I have never heard of it

23% of Python developers already know about the Developer-in-Residence role, and 91% of them find this initiative good.

Moreover, 30% of developers who are aware of the Developer-in-Residence role already see the impact of this innovation.

Reporting the issues

Only 19% of Python users have ever reported its bugs. Interestingly, using bugs.python.org is not the most popular way to report them – about twice as many programmers prefer to ask elsewhere or submit a pull request to GitHub.

Of those who reported bugs, 73% got their issue solved, and only 7% of respondents say they have never heard back from anybody.

Have you tried reporting your issues?

9%

Yes, I’ve asked elsewhere

8%

Yes, I’ve submitted a pull request on GitHub

4%

Yes, I’ve reported an issue on bugs.python.org

2%

Yes, I’ve asked on mailing lists

1%

Yes, I’ve asked on Discourse

81%

No

Was your issue solved?

47%

Yes, eventually

26%

Yes, quickly

18%

No, although there was discussion

7%

No, I never heard back from anybody

3%

Other

This question was only answered by respondents who have already reported issues.

Python Packaging

63%

of Python developers use containers, and 59% of them use a virtual environment in them.

Do you use a virtual environment in containers?

Which tools related to Python packaging
do you use directly?
100+

81%

pip

32%

venv (standard library)

30%

Containers (eg: via Docker)

23%

virtualenv

22%

Conda

13%

Poetry

13%

pipenv

11%

Virtual machines

10%

twine

6%

tox

2%

Workplace specific proprietary solution

1%

flit

0%

PDM

2%

Other

7%

None / I'm not sure

Do you use the standard library module venv?100+

42%

I use venv directly

23%

I use it via virtualenv

11%

I use it via Poetry

11%

I use it via Pipenv

4%

I use it via tox

1%

Other

23%

No, I do not use venv

11%

I don’t know

Application dependencies

45% of Python developers use some tools for version pinning of application dependencies. The most common way to store it is in requirements.txt, which is used by three quarters of developers.

Do you use any tools for managing precise/exact versions of application dependencies?

What format(s) is your application dependency information stored in?100+

76%

requirements.txt

26%

pyproject.toml

22%

poetry.lock

16%

pipfile.lock

11%

Conda environment.yml

4%

pip constraints.txt

5%

Other

3%

None

This question was only answered by respondents who use some tools for managing precise/exact versions of application dependencies.

Do you use any automated services to update the versions of application dependencies?100+

24%

Dependabot

10%

Custom tools, e.g. a cron job or scheduled CI task

6%

PyUp

2%

Other

65%

No, my application dependencies are updated manually

Which tools do you use for application dependency management?100+

27%

poetry

26%

pipenv

26%

pip-tools

4%

Other

33%

None

This question was only answered by respondents who use some tools for managing precise/exact versions of application dependencies.

Packages installation

90% of developers report they use pip to install Python packages. The Python Package Index is the most popular place to get the packages from.

Where do you install packages from? 100+

81%

PyPI

33%

GitHub

17%

Local source

16%

Anaconda

15%

From Linux distribution

11%

Private Python Package Index

10%

Internal mirror of PyPI

10%

conda-forge Conda channel

9%

Default Conda channel

8%

GitLab

4%

Other Conda channel

3%

Artifactory

2%

Other

9%

I’m not sure

Which tools do you use for installing packages?100+

90%

pip

21%

Conda

13%

Poetry

5%

easy_install

5%

pipx

2%

pip-sync

3%

Other

3%

None

55%

of Python developers say they develop applications, and Setuptools is the most popular tool for this purpose, used by 46% of developers.

Which tool(s) do you use to develop
Python applications?
100+

46%

Setuptools

30%

Wheel

18%

build

17%

Poetry

5%

conda-build

2%

Flit

1%

pex

1%

PDM-PEP517

1%

maturin

1%

Enscons

4%

Other

28%

None / I'm not sure

This question was only answered by respondents who develop applications.

While more than half of Python users develop applications, only 40% of them have already published these apps to a package repository.

Which tools do you use to create packages
of your Python libraries?
100+

71%

Setuptools

42%

Wheel

26%

build

20%

Poetry

5%

conda-build

3%

Flit

1%

Enscons

1%

pex

1%

maturin

1%

PDM-PEP517

3%

Other

This question was only answered by respondents who develop Python libraries.

34% of respondents develop Python libraries, and for them Setuptools is the most common way to package it, used by 71%.

Interestingly, only 27% of Python library developers have already published them to a package repository.

Where have you published your packaged
Python libraries?
100+

72%

PyPI

37%

Private Python Package Index

10%

Internal mirror of PyPI

6%

conda-forge

4%

Other

This question was only answered by respondents who published their packaged Python libraries.

The Python Package Index is the most popular place to publish developed libraries and application packages, while the Private PyPI is used about half as often.

Demographics

Working in a team vs working independently

48%

Work in a team

48%

Work on own project(s) independently

4%

Work as an external consultant or trainer

Working on projects

42%

Work on many different projects

39%

Work on one main and several side projects

19%

Only work on one project

Employment status

62%

Fully employed by a company / organization

14%

Student

6%

Freelancer

6%

Self-employed

6%

Working student

4%

Partially employed by a company / organization

1%

Retired

2%

Other

Company size

7%

Just me

12%

2–10

17%

11–50

24%

51–500

7%

501–1,000

10%

1,001–5,000

19%

> 5,000

3%

Not sure

This question was only answered by respondents who are employed in companies.

Team size

72%

2-7

17%

8-12

6%

13-20

3%

21-40

2%

> 40

This question was only answered by respondents who are employed in companies.

Company industry

41%

Information Technology / Software Development

7%

Science

7%

Education / Training

5%

Accounting / Finance / Insurance

4%

Manufacturing

4%

Medicine / Health

3%

Banking / Real Estate / Mortgage Financing

This question was only answered by respondents who are employed in companies.

Target industry

51%

Information Technology / Software Development

4%

Accounting/Finance/Insurance

3%

Manufacturing

3%

Medicine/Health

3%

Sales / Distribution / Business Development

3%

Banking / Real Estate / Mortgage Financing

3%

Security

This question was only answered by respondents who are employed in companies.

Job roles100+

72%

Developer / Programmer

17%

Data analyst

17%

Architect

17%

Team lead

9%

Technical support

7%

Systems analyst

6%

CIO / CEO / CTO

5%

QA engineer

5%

Product manager

5%

DBA

4%

Business analyst

4%

Technical writer

13%

Other

This question was only answered by respondents who are employed.

Age range

10%

18–20

38%

21–29

29%

30–39

13%

40–49

6%

50–59

3%

60 or older

Python experience

23%

Less than 1 year

23%

1–2 years

29%

3–5 years

15%

6–10 years

10%

11+ years

Professional coding experience

36%

Less than 1 year

19%

1–2 years

19%

3–5 years

11%

6–10 years

15%

11+ years

What is your country or region?

All countries/regions smaller than 1% have been merged into “Other”.

17%

United States

9%

India

7%

Germany

6%

Mainland China

5%

United Kingdom

5%

France

4%

Russian Federation

3%

Brazil

3%

Poland

3%

Canada

2%

Italy

2%

Netherlands

2%

Australia

2%

Iran

Methodology and Raw Data

Want to dig further into the data? Download the anonymized survey responses and see what you can learn! Share your findings and insights by mentioning @jetbrains and @ThePSF on Twitter with the hashtag #pythondevsurvey.

Before dissecting these data, please note the following important information:

The data set includes responses only from official Python Software Foundation channels. After filtering out duplicate and unreliable responses, the data set includes more than 23,000 responses collected between October 11 and December 6, 2021, through the promotion of the survey on python.org, the PSF blog, the PSF’s Twitter and LinkedIn accounts, official Python mailing lists, and Python-related subreddits. In order to prevent the survey from being slanted in favor of any specific tool or technology, no product, service, or vendor-related channels were used to collect responses.

The data is anonymized, with no personal information or geolocation details. To prevent the identification of any individual respondents by their verbatim comments, all open-ended fields have been deleted.

To help you better understand the logic of the survey, we are sharing the data set, the survey questions, and the survey logic. We used different ordering methods for answer options (alphabetic, randomized, and direct). The order of the answers is specified for each question.

Criteria for filtering out responses

  • Age 17 or younger.
  • Did not reach the question “How many years of professional coding experience do you have?” on the third page of the survey.
  • Age under 21 and more than 11 years of professional coding experience.
  • Too many single answers for multiple choice questions (excluding “None” answers).
  • Responses from the same email addresses (only one response left within).
  • Similar responses from the same IP address.

At least two of the following:

    • More than 16 programming languages used.
    • More than 9 job roles.
    • More than 11 Python usage purposes (​​”What do you use Python for?”).
    • Selected country/region is among the top of the list alphabetically, not among popular countries/regions, and differs from the IP-detected country/region.
    • CEO and Technical Support job roles together.
    • CEO and age under 21 together.
    • Too many answers selected overall (those, who use almost all frameworks for data science, for web development, packaging, etc.).
    • Answered too quicky (less than 6 second per question).

Once again, on behalf of both the Python Software Foundation and JetBrains, we’d like to thank everyone who took part in this survey. With your help, we’re able to map the landscape of the Python community more accurately!

Contribute to the PSF’s Recurring Giving Campaign. The PSF is a non-profit organization entirely supported by its sponsors, members & the public.

Check out the Python Developer Survey results in 202020192018, and 2017.

Discover the other large-scale survey reports by JetBrains!

Thank you for your time!

We hope you found our report useful. Share this report with your friends and colleagues!

Join the JetBrains Tech Insights Lab

Take part in surveys and UX studies to make JetBrains products easier to use yet even more powerful. For participating in our research, you'll also get the chance to earn rewards.