The complete workflow at a glance
1
Open your terminal
Open your system terminal:
- macOS: Terminal or iTerm2
- Windows: Windows Terminal, PowerShell, or Command Prompt
- Linux: Your preferred terminal emulator
2
Navigate to your projects folder
3
Create the project with uv
The
.venv folder and uv.lock are created automatically when you first run uv add. They do not exist yet at this stage.4
Open the project in VS Code
If
code . does not work, install the VS Code CLI by opening VS Code, pressing Ctrl/Cmd + Shift + P, and running Shell Command: Install ‘code’ command in PATH.5
Add your project's packages
Open the integrated terminal in VS Code (After these commands, uv has:
Ctrl + `) and install what your project needs:- Created
.venv/with all packages installed - Updated
pyproject.tomlwith your declared dependencies - Generated
uv.lockwith exact reproducible versions
Ctrl/Cmd + Shift + P → Python: Select Interpreter → choose the .venv option.6
Test your setup
Edit Run it:
main.py to verify everything works:7
Set up environment variables
Create a Create a
.env file for your secrets (API keys, database URLs, etc.):.env.example as a safe template to commit:8
Initialise Git
.venv/ and .env are already excluded by uv’s .gitignore.9
Create a GitHub repository
- GitHub CLI (recommended)
- GitHub website
Your daily development workflow
After the initial setup, your day-to-day routine is simple:Quick reference: the full setup in one block
Pro tips for sustainable projects
- Commit often — small, focused commits are easier to understand and revert than large ones
- Write clear commit messages — “Fix login validation bug” is far more useful than “updates”
- Keep secrets in .env — never hardcode API keys, passwords, or tokens in your source files
- Update dependencies regularly — run
uv sync --upgradeperiodically to stay on secure, maintained versions - One virtual environment per project — never share environments across projects, even if they look similar
Course Resources
Access all practice notebooks, exercise files, and real-world datasets for the course.