Home·Error messages

python · Python

The message

TabError: inconsistent use of tabs and spaces in indentation

What it means

Tabs and spaces are mixed inside one block, so Python cannot decide which line is deeper. It happens when you paste from an editor that inserts tabs, or when two people edit the same file with different settings; on screen the lines look identical, so you will not find it by eye. python -m tabnanny app.py prints the offending line numbers, and the rest is converting that file to four spaces throughout in your editor.

The fix

python -m tabnanny app.py
Printed by
python
Python
18

A Python traceback splits the answer in two — the last line says what went wrong, the frames above it say where — so reading only the last line gives you the name and loses the place, and for the value-is-missing errors such as NoneType and KeyError the cause almost always sits in a frame above the one that crashed.

Reading an error message

  • Read from the first line down. The lower you go the more it is about the tool’s internals; the cause is usually at the top.
  • If there is a file and a line number, start there — not the top stack frame, but the topmost line that names a file you wrote.
  • Search the message verbatim, but strip your own paths and variable names first; those are what stop the search from matching.
  • The same condition is worded differently across tool versions. If results look wrong, add the version number to the query.
  • Before pasting a fix, check what it throws away. Some of these cannot be undone.

Common questions

Q. What does “TabError: inconsistent use of tabs and spaces in indentation” mean?

Tabs and spaces are mixed inside one block, so Python cannot decide which line is deeper. It happens when you paste from an editor that inserts tabs, or when two people edit the same file with different settings; on screen the lines look identical, so you will not find it by eye. python -m tabnanny app.py prints the offending line numbers, and the rest is converting that file to four spaces throughout in your editor.

Q. How do I fix it?

python -m tabnanny app.py — before running it, check the explanation above for what this command discards.

Q. Which tool prints this?

python. It sits under Python, and the message runs to 9 words.

Errors nearby