Version 3.1.1

This is last release announcement in the blog. From now on Thonny’s development takes place in GitHub ( and the releases will be described there:

Version 3.0.8

This is a bug-fix release.

Changes since 3.0.5:

3.0.8 (2018-11-15)

  • FIXED #597: The directory with Python scripts may not be in path for executing system commands from shell
  • FIXED: Make executing shell commands compatible with Python 3.5
  • FIXED: Make MyPy support compatible with older MyPy versions
  • FIXED: Make turtle.pyi compatible with Python 3.5 and remove Windows linebreaks
  • FIXED: MyPy error col offset

3.0.7 (2018-11-14)

  • FIXED #592: MyPy doesn’t work when cwd == sys.prefix
  • FIXED #593: No-message exceptions crash the Assistant
  • FIXED #595: Running system commands causes an error
  • FIXED #596: Arguments are ignored when running system commands from shell in Posix

3.0.6 (2018-11-13)

  • FIXED #538: Turtle programs may give false warnings (Typeshed stubs were not packaged)
  • FIXED #586: Import interception mechanism fails for some modules
  • FIXED #591: Assistant fails when filename is missing from error info

Version 3.0.5

Here are the changes since version 3.0.1:

3.0.5 (2018-10-26)

  • FIXED #573: “Highlight matching names” and “Highlight local variables” makes editor very slow
  • FIXED #574: Error in outline
  • FIXED #578: resizing local variable pane in debugger causes error

3.0.4 (2018-10-22)

  • FIXED #564: In Windows “Highlight local variables” and “Higlight matching names” cause Thonny to load Jedi files

3.0.3 (2018-10-21)

  • FIXED: Regression from 3.0.2 (incomplete code refactoring)

3.0.2 (2018-10-21)

  • FIXED #563: Problems with HeapView and EventsView
  • FIXED #565: Don’t replace tabs in shell

Version 3.0.1

This is the first published stable release of Thonny 3.0.

Thonny 3.0 has many new features and most of them have been introduced already in previous posts or explained elsewhere:

Development of several features were suggested and supported by Raspberry Pi Foundation. Many thanks to them!

There are some important changes in the requirements:

All new features and changes are listed in the changelog:

Big thank you to everybody who have helped Thonny so far!

You can find download links from Thonny’s homepage.

Version 3.0.0b5

Most new features happened in previous betas, but this one still has one big new feature – meet the Assistant!

See Thonny’s Bitbucket downloads page for download links or pip install –pre thonny into a virtual environment.


Just like new debugger features, this feature has been supported by Raspberry Pi Foundation ( Many thanks to them!

Assistant is a new view in Thonny, which observes your program runs and offers help if you get an exception or if it finds something fishy in your code. It uses Pylint and MyPy for static analysis and custom dynamic analysis for understanding the error situations better.

Here is an example:

Many error types are not supported yet – you may even call it a proof of concept for now. Here is where your help is needed – if you meet a situation where Assistant could be more helpful, then click on the feedback link at the bottom of the view and let us know! You are welcome to discuss this feature also here under this blog post or in the main forum.

All changes since 3.0.0b3

  • NEW: When program has syntax error or crashes with an exception, Assistant pane opens and tries to help diagnose the problem. Uses Pylint, MyPy and custom dynamic analysis under the hood. (Big “Thank you!” to Raspberry Pi Foundation for the support!)
  • ENHANCEMENT: Resizing the main window doesn’t mess up views’ layout anymore.
  • ENHANCEMENT: Better support for debugging f-strings.
  • ENHANCEMENT: Nice debugger now recovers better when it is not able to understand a program.
  • FIXED #496: Regression which caused Variables view to skip variables updates during “nicer debugging”.
  • FIXED #440: Copy&paste over a selection will now delete the text selection first (was problem for some Linuxes)
  • FIXED: Removed a nasty debugging statement left into b3, which may cause a crash in the end of debugging.

Version 2.1.22

Happy re-independence day to Estonia!

See the homepage for download links, and wiki for installation instructions.

Changes since 2.1.21:

  • ENHANCEMENT: Less intrusive logging for AST marking problems
  • FIXED #340: Validate geometry before loading
  • FIXED #363: causes Thonny backend to hang
  • FIXED #419: logging doesn’t work in user programs
  • FIXED #440: In Linux paste over selection doesn’t remove the selection
  • FIXED #487: Use and turn off pip warnings in package manager
  • FIXED #490: Debugger gets confused with f-strings
  • FIXED: In case of back-end problems, kill backend instead of resetting
  • FIXED: Colorize f-string prefixes

Version 3.0 beta

Thonny 2.2 beta already brought along many new features, but they kept coming, so I decided to skip 2.2 stable release and continue under version 3.0.

See Thonny’s Bitbucket downloads page for download links.

Debugging enhancements

Thanks to the support from Raspberry Pi Foundation, Thonny now has several new debugger-related features.

The original debugger has been very useful for explaining the meaning of Python constructs, but its memory and time overhead became noticeable when making bigger steps in some programs (especially after the introduction of stepping back in time). Although the performance has been greatly improved in 3.0 beta, larger programs would still benefit from a more efficient solution.

Thonny now has two debug modes. Beside the original AST-based debug mode – the “nicer” one (Ctrl+F5), there is new, traditional line-based mode – the “faster” one (Shift+F5). The new mode is not as intuitive but much more efficient. We expect that most students start with the nicer debuger and move on to the faster one when their programs grow bigger.

By default the new debugging mode still uses stacked windows for presenting the call stack. This gives good intuition about the concept, but it may become cumbersome to use. Therefore in 3.0 one can choose between two different styles for presenting call stack. In “Tools → Options → Debugger” you can switch to more traditional style with a separate view for presenting and switching call frames. Note that both styles can be used with both debugging modes.

Last, but not least, Thonny finally supports breakpoints. For using them, you need to switch on line numbers (Tools → Options → Editor). This gives you the margin, where you can add or remove breakpoints with double-clicks. Note that you don’t need to use breakpoints – if you start the debugger without breakpoints, Thonny stops before the first statement, just like it used to.

New default back-end

Thonny 2.1 introduced automatically managed virtual environment as default back-end. The idea was to allow students start from clean slate and add packages later without worrying about the integrity of whole system. It turned out that many instructors did not like this scheme as it often made things more complex and confusing, especially in classroom setting.

In version 3.0 the default back-end is “The same interpreter which runs Thonny” (by the way, this was already the default setting on Raspberry Pi). This means your programs will see all Python packages that are installed to this interpreter. Instructors can now install extra packages to the central interpreter and students will see the packages without any hassle.

This change does not mean that I now consider virtual environments unimportant. As a new feature, Thonny 3.0 offers an easy way for creating and using virtual environments (Tools → Options → Back-end → Alternative Python 3 interpreter or virtual environment).

“A special virtual environment” back-end is still available and if you used it with your older Thonny, then Thonny 3.0 will use it as well. If you are using Thonny+Python bundle, then 3.0 will start by creating new virtual environment, because the one created for Python 3.6 does not work with Python 3.7.

More straightforward user package management

Now when default back-end is not a virtual environment, how can users install extra packages? In 3.0 the package manager (“Tools → Manage packages…”) installs to user site packages (with pip install --user) when back-end is not a virtual environment. The plug-ins manager always installs to user site packages, unless Thonny itself is run from a virtual environment.

You can also install packages outside of Thonny (either with or without --user) and these will be visible in Thonny.

Basic MicroPython support built-in

MicroPython plug-ins for Thonny have been available for a while, but so far this topic was kept separate from the main project. Since Thonny 3.0 the core of these plug-ins will be developed and distributed as part of the thonny package. For the end-user this means that it is possible to program MicroPython devices without installing any extra plug-ins (just select “Tools → Options → Back-end → MicroPython on a generic device”). For more complete support (eg. for installing or updating firmware) there are device-specific plug-ins/back-ends available. See for more info.

New Windows installer

This was already introduced in 2.1.21, but let’s repeat it here as well. You can now use Windows installer for installing either for current user or for all users. See the 2.1.21 announcement for more info.


In case you missed 2.2 beta announcement – Thonny now has ability for changing UI and syntax themes (Tools → Options → Theme & Font).

New versions / requirements

  • Thonny+Python bundles now come with Python 3.7.
  • Python 3.4 is not supported anymore (neither for front-end nor as back-end).
  • Tk 8.5 is not supported anymore.
  • Mac bundle now requires macOS 10.9 or later (because it bundles 64-bit only Python). Note that you can still pip install thonny on older Macs (provided you have Python with Tk 8.6).

How to test the beta without affecting your stable Thonny?

If you don’t want to overwrite your current Thonny, then you can pip install --pre thonny into a virtual environment. Since 3.0, when Thonny is run from a virtual environment, it keeps all user data (eg. configuration.ini) also inside this environment. This way you don’t risk messing up the configuration of your stable Thonny version and you can get rid of the beta just by deleting the virtual environment.

All new features and changes since 2.2b4

  • NEW: Thonny now has two debug modes: beside original AST based debug mode (the “nicer” one, Ctrl+F5) there is now also line-based mode (the “faster” one, Shift+F5), which is not so intuitive but much more efficient.
  • NEW: Both debug modes now support breakpoints (switch on line numbers and double-click on the margin)
  • NEW: Alternative presentation for call stack (in single window, just like in most debuggers; see Tools => Options => Debugger)
  • NEW: Clicking on the links in stacktrace now shows the variables of those frames.
  • NEW: You can re-run your changed program without closing it first (relevant for graphical programs).
  • NEW: Checking “Run => Dock user windows” makes your Tkinter windows stay on top and appear always on the same location. This allows tweaking your turtle programs while looking at current output.
  • NEW: “View => Program arguments” opens a box where you can write the argument string for your program
  • NEW: “Tools => Options => Backend => Custom Python interpreter” now allows creating virtual environments
  • NEW: “Tools => Manage packages” now allows installing new packages with all CPython backends, not only virtual environments. If the backend is not a virtual environment it installs to user site packages (with pip install –user)
  • NEW: Thonny now includes basic support for MicroPython (former thonny_microbit plug-in). See for more info.
  • CHANGED: Upgraded Python to version 3.7.0 in Thonny+Python bundles
  • CHANGED: Dropped support for Python 3.4 (both for front-end and back-end)
  • CHANGED: Dropped support for Tk 8.5. All bundles (including Mac’s) now come with Tk 8.6.8
  • CHANGED: Default back-end is now “Same as front-end” (was “A special virtual environment”). This makes deployment easier in classroom setting and it is simpler scheme in general. “Special virtual environment” backend may be removed in future versions.
  • CHANGED: Plug-ins will be now installed to regular user site packages directory (was ~/.thonny/plugins)
  • CHANGED: If Thonny (front-end) is run from a virtual environment, user directory (with configuration.ini and logs) will be .thonny under virtual environment’s root directory (instead of usual ~/.thonny).
  • ENHANCEMENT: Better Windows installer (run as administrator for all-users install)
  • ENHANCEMENT: thonny.exe is now digitally signed
  • ENHANCEMENT: On Linux Thonny now uses native file dialogs (via zenity)
  • ENHANCEMENT: Nicer debugger can now step into your functions defined in other modules
  • ENHANCEMENT: Nicer debugger can now stop before the assignement of loop variable in for-loops
  • ENHANCEMENT: “Run to cursor” can be called by right-clicking desired line in the editor and selecting the command from context menu
  • ENHANCEMENT: Great time and memory optimizations in nicer debug mode. The ability to step back in time is not so expensive anymore.
  • ENHANCEMENT: Thonny now detects external file modifications and proposes to reload
  • ENHANCEMENT: New Windows installer (run as administrator for all-users install)
  • FIXED #163: Uninstaller now correctly removes “Open with Thonny” context menu entry
  • FIXED #340: Validate geometry before loading
  • FIXED #358: sys.exit() in user programs doesn’t show stacktrace anymore
  • FIXED #363: causes Thonny backend to hang
  • FIXED #375: Files are now saved with linebreaks suitable for current platform
  • FIXED #419: logging doesn’t work in user programs
  • FIXED #422: Make Ctrl+C, Ctrl+V etc. work on Greek keyboard
  • FIXED #440: In Linux paste over selection doesn’t remove the selection
  • FIXED #450: Locals marker doesn’t work with jedi 0.12
  • FIXED #468: Problem with changing backend interpreter
  • FIXED #471: Problem when Thonny uses jedi 0.11 or newer
  • FIXED #475: Heap view misbehaving on startup
  • FIXED: “Run => Run to cursor” works again
  • FIXED: Thonny now honors PEP 263 style encoding markers when saving files. (UTF-8 is still the default)
  • FIXED: Problem when jedi 0.10 and parso are both installed
  • FIXED: Various problems with pip GUI
  • FIXED: Variables view misses events
  • FIXED: Error when last back-end was not available anymore
  • FIXED: problems with pip GUI in virtualenv
  • TECHNICAL: Plug-in writers can now control each import in user programs (thonny.backend.VM.add_import_handler)
  • TECHNICAL: Communication messages between back-end and front-end were changed
  • TECHNICAL: Thonny doesn’t tweak PYTHONUSERBASE anymore to put plugins under ~/.thonny. Regular user site packages is used instead
  • TECHNICAL: Dependency to “packaging” introduced in 2.2 betas is now replaced with “setuptools”
  • TECHNICAL: Implemented ChoiceDialog

Version 2.1.21


  • New installer for Windows bundle. Now you can also install Thonny for all users (eg. under C:\Program Files (x86)). For this you need to run the installer as administrator (right-click installer exe and select “Run as administrator”). If you run it with simple double-click, then you get old behaviour (installing for your user only).
  • Bundled Python version was upgraded to 3.6.6.

See the homepage for download links, and wiki for installation instructions.

Whole changelog since 2.1.17:

2.1.21 (2018-07-17)

  • FIXED #471: Another problem when Thonny uses jedi 0.11 or newer

2.1.20 (2018-07-16)

  • FIXED: Problem when jedi 0.10 and parso are both installed

2.1.19 (2018-07-16)

Updates in this version are relevant only on Windows

  • FIXED #467: Error when running Thonny with pythonw on Windows (regression from 2.1.18)
  • ENHANCEMENT: New Windows installer (run as administrator for all-users install)
  • ENHANCEMENT: Upgraded Python to version 3.6.6 in Thonny+Python bundles

2.1.18 (2018-06-22)

  • FIXED #450: Locals marker doesn’t work with jedi 0.12

Thonny and MicroPython

Thonny 2.1 had a plug-in called thonny-microbit, which added possibility to program BBC micro:bit.

Thonny 2.2 has plug-ins which add more general support for various MicroPython devices – see for more info.

NB! You need at least Thonny 2.2b3 to test it!

Version 2.2.0 beta

Version 2.2 contains several new features and some bug-fixes (listed below). This post will be updated during the beta phase to let you know about the progress.

See Thonny’s Bitbucket downloads page for download links.

Stepping back in time

One of the new features in 2.2 is possibility to step back in time during debugging. This comes in handy when you are debugging with big steps (step over) and accidentally step over an interesting part in code. Instead of starting from scratch again, you can now issue the command “Run -> Step back” which brings the visual represetation of the program back to the state as it was before last debugger command. From there you can choose to continue with small steps (step into). You can make as many steps back as required and you can go back and forward as many times as you wish.

Stepping back was implemented by Alar Leemet as part of his Bachelor thesis. Please give him feedback about this feature!

2.2.0b4 (2018-06-05)

  • FIXED: Couldn’t open menus with None backend

2.2.0b3 (2018-06-05)

  • FIXED #425: Too big automatic scaling
  • FIXED #427: Can’t run files with spaces in filename
  • FIXED: Fixed a bug when debugging and encountering an exception (by Alar Leemet)
  • ENHANCEMENT: Show indicator about stepping in the past in the text of editor tabs
  • ENHANCEMENT: Added Thonny version guards for installing plug-ins
  • EXPERIMENTAL: Preliminary support for running system commands in Thonny shell (eg. !ls or !dir)
  • TECHNICAL: thonny.exe in Windows bundle is now signed
  • TECHNICAL: Delay starting of Runner until UI is shown
  • TECHNICAL: Various enhancements to support MicroPython plug-ins (

2.2.0b2 (2018-05-04)

  • FIXED: Options dialog crashes when Variables view hasn’t been created yet

2.2.0b1 (2018-05-04)

  • NEW: Added support for stepping back in time during debugging (Run => Step back) by Alar Leemet. If you accidentally stepped over an interesting part of code, then now you can step back and step into.
  • NEW: Added support for UI and syntax theming (
  • NEW: Added several built-in dark themes
  • NEW: Added support for display scaling / high-DPI screens (Tools => Options => General)
  • NEW: Added closing buttons to the tabs of all views
  • NEW: Added support for (CPython) back-end plug-ins (
  • NEW: Current editor line can be highlighted (Tools => Options => Editor)
  • NEW: Thonny can be started in simple mode (
  • NEW: Variables view now allows viewing variables from other modules beside __main__ (Tools => Options => General)
  • CHANGED: Dropped support for Python 3.4 (both for front-end and back-end)
  • CHANGED: Reorganized back-end configuration (“Tools => Options => Back-end” instead of “Tools => Options => Interpreter”)
  • CHANGED: The roles of Interrupt and Stop commands are now more clear: Stop always restarts the backend and Interrupt only tries to interrupt
  • CHANGED: Editing the running program doesn’t interrupt it anymore.
  • CHANGED: Object inspector now shows attributes and object overview on different tabs
  • CHANGED: Can’t set thonny.THONNY_USER_DIR directly in anymore (
  • CHANGED: For plug-in writers: Unified early and late plug-ins (load_early_plugin should be renamed to load_plugin)
  • CHANGED: For plug-in writers: get_workbench and get_runner moved from thonny.globals to thonny
  • FIXED #358: Hide the stacktrace of SystemExit
  • FIXED #368: “Open system shell” doesn’t work in Xfce (fix by Miro Hrončok)
  • FIXED #370: Made zooming with Ctrl++ / Ctrl+- work on the numpad on Linux
  • FIXED #372: Now it’s possible to specify a link as backend interpreter (fix by Miro Hrončok)
  • FIXED #396: exec causes range marker to crash
  • FIXED #403: Window width may become negative
  • TECHNICAL: Changed the location and sharing of,,
  • TECHNICAL: Cleaner approach for sharing jedi with the back-end
  • TECHNICAL: Package manager now uses instead of
  • TECHNICAL: Several changes in Runner and BackendProxy interface
  • TECHNICAL: Saving an editor now forces writing to disk (see