I have been learning Python since the end of last year, and recently moved from IDLE to Thonny. I was surprised to almost immediately hit a 'ModuleNotFoundError' in Thonny - here's why, and how to fix it.
IDLE is the Integrated Development Environment (or IDE) that comes bundled with the default implementation of Python, so I am sure that many new Pythonistas begin their Python journey using IDLE. I certainly did.
IDLE has the benefit of simplicity, but is perhaps best suited to absolute beginners. After a while I was ready to move to a different IDE and chose Thonny: still simple, still free, but with some useful features for learners such as the ability to debug step by step without adding breakpoints first.
However when I tried to run many of my Python scripts in Thonny I received a 'ModuleNotFoundError' like this:
And it wasn't just pandas: none of the packages I had been using with IDLE, from seaborn to matplotlib, were available in Thonny! Running a script that required any of them threw a similar 'ModuleNotFoundError'. I'd installed these packages using pip (not via IDLE) so had assumed they would all be available for use in any IDE, Thonny included.
The reason for this confusion is that Thonny comes with Python 3.7 built in (or 'bundled'), and by default uses this Python installation rather than the one you may have previously been using with a different IDE. If you look at the first line of the screengrab above, you can see that Thonny is telling me that I am using "Python 3.7.7 (bundled)". For reference it is located at:
You will also see this Python installation referred to in Thonny's menus as "the same interpreter which runs Thonny".
If Thonny is your first experience of Python, then I suppose that bundling Python with Thonny removes the need to install Python separately and eliminates one barrier to entry - a good thing. However if you are moving to Thonny from a different IDE then it can be quite disconcerting!
If you find yourself in this situation, there are two things you can do. Perhaps the easier approach is to swap back to your previous Python interpreter (installation) - or you could install your required packages for use with Thonny's bundled interpreter. Here's how to do either:
For example here you can see that pandas requires numpy among other packages, and that I don't have the latest stable version of pandas installed.
Although initially confusing, the approach that Thonny takes is pretty powerful. It enables you to set up and very quickly swap between multiple Python interpreters, and see at a glance which packages have been installed for use with each. This could help you, for example, avoid dependency conflicts.