As a TypeScript developer you rely on a predictable set of tools: npm manages packages, eslint catches mistakes, prettier enforces formatting, tsc type-checks, and jest runs tests. Each tool has one job, and they compose cleanly.
Python’s toolchain grew more organically. For years every concern — package management, virtual environments, formatting, linting, type-checking, testing — had multiple competing options. That fragmentation is the first thing that surprises developers coming from Node.
The good news: the ecosystem is consolidating fast. The table below maps each Node/TS tool to its Python counterpart, old and new.
In Node, each project gets its own node_modules folder automatically. Python installs packages into a single global site-packages directory by default. Without a virtual environment, every project on your machine shares the same package versions — one upgrade can break another project.
Virtual environments (venv) solve this by creating a local, isolated Python + pip per project. You will never skip this step in professional Python work.
Run this in your terminal:
Terminal window
python3-mvenv.venv# create isolated env
source.venv/bin/activate# activate it (macOS/Linux)