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:
C:\Users\username\AppData\Local\Programs\Thonny\python.exe
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.
you could also change the interpreter to the you actual python interpreter and not the thonny python one.
Hey! Thanks a million. Looked through many solutions - but this was the only REAL one where anyone knew what they were talking about. Everyone else either was teaching to install - pip install - the packages or were on a tangent about importing user defined scripts.
Once again - Thanks. (So that makes it a million and one thanks.:) ))
Thank you very much for your article. Also for me it worked!
I got the same problem with my Raspberry Pi. Two versions of Python are installed on it. Maybe is he reaswon that Thonny couldn't find it and I got always the ModuleNotFoundError: No module found named psycopg2.
I had to go in the Thonny's menu tot the package manager (Tools> Manage packages. just as you described, and find the package from PyPi. Then: click Install
Thanks, James!
You pointed to the right spot. Would be best to trigger Thonny authors to detect another Python installation at first run and let the user to choose...
I cannot thank you enough!!! I have spent HOURS tonight scouring the internet trying to find a solution and have wasted a ton of time uninstalling, reinstalling, trying pip install vs. pip3 install, etc., etc. I was ready to pull my hair out because I kept getting the error for several different modules in several different projects that are due for my class very soon. I agree with another comment that it would be incredibly helpful if Thonny detected another Python installation and alerted the user to select the default interpreter upon initial use, but at least now I know… Read more »
thanks a lot!!!
I forgot to comment in previous thanks...
i tryed to reinstal the module for thonny but pypi responded that the module was already instaled, evidently in the first python but not in thonny...
but i didnt knew/find how to change interpreter.
I even tryed to copy paste the modules in the thonny folder...
thanks again