Automatically Sort Your Python Imports in Flask and Django with isort
No longer worry about alphabetizing or spacing out imports that are from the standard lib, a third party library or your own code.
Quick Jump: Demo Video
pip3 install isort and then run the command below to sort all of your imports:
You can also run it in check mode which is handy for running it in CI so that CI will fail if your imports aren’t sorted:
isort . --check
You can also create a
pyproject.toml file to configure it, such as:
[tool.isort] profile = "black" force_single_line = true
I like using Black and this will ensure isort formats everything in a Black compatible way.
If you use a custom line length with Black you can configure that too:
[tool.black] line-length = 79 [tool.isort] profile = "black" line_length = 79 force_single_line = true
The above is a config that’s compatible with flake8, Black and isort.
The last option will convert:
from third_party import ( lib1, lib2, lib3, lib4, )
from third_party import lib1 from third_party import lib2 from third_party import lib3 from third_party import lib4
I prefer this style but there’s many other ways documented in their multi-line output modes page as well as having other config options available in their docs.
I’m now using this tool in my example Flask and Django Docker web app projects.
- 0:14 – Python import sorting style best practices
- 1:02 – Running isort to see the before and after
- 2:25 – It is compatible with Black
- 2:29 – Customizing styles for when your imports need more than 1 line
- 4:48 – I’ve added shortcuts to run it in my example apps
- 5:01 – Check mode will check your files and exit 1 if they’re not sorted
- 6:41 – Which isort options do you use?
Are you using isort, if so what options do you use? Let me know below!