Tonight I finally sat down to work through Paul Deitel’s Python Fundamentals course the right way. What should have been a straightforward “install Anaconda → download examples → start Lesson 1” turned into a deep cleanup of years of accumulated Python environments.
I had been getting confused for a real reason.
Over time I had installed both Miniforge and Anaconda. They both put themselves on the system PATH. The result was classic environment hell:
- Typing python –version would sometimes show one version
- Typing ipython would launch a completely different Python
- Custom environments from older projects (ai, bhp, py4e, webui, etc.) lived in Miniforge
- The new clean Anaconda install for the Deitel course was fighting with the old installation
This is exactly why students (and even experienced developers) get frustrated and quit. You follow the book, run the commands, and suddenly you’re looking at the wrong Python version. It feels like you’re doing something wrong when the real problem is environmental pollution.
So I made the decision to stop the course and fix the foundation first.
Here’s what i had to do:
- Completely removed the previous Anaconda installation and did a clean install of the latest Anaconda.
- Created a dedicated deitel environment using the new Python 3.14 that came with the fresh install (instead of forcing the older 3.13 the course video showed).
- Exported and carefully migrated the useful environments from the old Miniforge installation (ai, ai-env, bhp, lewm, py4e, webui) into the new Anaconda.
- Renamed the old Miniforge folder so it can no longer interfere with PATH.
- Verified that ipython, python, and the active environment now all consistently report the correct version.
The result: a clean, predictable setup. When I activate the deitel environment, everything points to the same Python 3.14.6. No more surprises.
This was not a detour. It was the most important work of the night. Trying to force progress while the foundation is broken only creates more confusion later. Now I can pick up tomorrow morning exactly where the course left off — Lesson 1, IPython interactive mode — without the mental overhead of wondering which Python I’m actually talking to.
Sometimes the most productive thing you can do is stop and clean the workspace.
Tomorrow I continue with Deitel, properly.
Update – August 4, 2026
What got accomplished today (continuing from the environment cleanup)
With the foundation finally clean, I was able to move forward productively through the early Deitel material without the constant background doubt about which Python I was using.
Key progress:
- Successfully ran RollDieDynamic.py and fully understood the terminal behavior around the matplotlib animation window (why the up-arrow appeared broken, the importance of closing the plot window, and when stty sane / reset is needed).
- Clarified the difference between running the script from the shell (ipython RollDieDynamic.py …) versus from inside an IPython session (%run).
- Cleaned up the leftover Jupyter kernel that still displayed as “Deitel Python 3.13” even though the environment had been upgraded. Renamed it simply to “Deitel” so the launcher is no longer misleading.
- Created and worked through the first Jupyter notebook (TestDrive.ipynb), including evaluating expressions, intentionally triggering syntax errors (as shown in the video), and practicing Markdown cells.
- Uploaded the notebook to Google Colab to practice the sharing workflow.
- Began Lesson 02 (Intro to Python Programming) and intentionally matched Paul Deitel’s environment by working in IPython interactive mode in the terminal.
The big difference today was mental clarity. Because the environment is now consistent, I could focus entirely on the course material instead of second-guessing versions and paths. Progress is still deliberate — only about 6% — but it’s clean progress.
