Python Projects and Tooling
Set up, structure and ship real Python projects.
Writing Python is only half of a developer's job; the other half is everything around the code. You will install packages into virtual environments, pin dependencies with requirements.txt, pyproject.toml and uv, lay a project out with a src folder and tests, build command-line interfaces with argparse, and replace print with logging and environment-based configuration that keeps secrets out of git. The course ends with a todo CLI and a CSV sales report CLI built as small, testable functions.
What you will learn
- Virtual environments
- pip and uv
- pyproject.toml
- Project layout
- argparse
- logging
- Environment configuration
Lessons
- 1
Environments and Packages
Install packages into a virtual environment, pin them, and describe a project in pyproject.toml.
8 exercises
- 2
Project Layout
Arrange a project with a src folder, packages, tests, a README and a .gitignore, and run it with python -m.
8 exercises
- 3
Command-Line Interfaces with argparse
Turn scripts into real commands with positional and optional arguments, types, choices, flags and subcommands.
8 exercises
- 4
Logging and Configuration
Replace print with leveled logging, read settings from environment variables, and keep secrets out of your code and your repository.
8 exercises
- 5
Putting It Together
Build a todo CLI and a CSV sales report CLI from small, tested functions with argparse, logging and config.
4 exercises
How you practice
You practice in the browser and every exercise gives you feedback right away. This course uses these formats:
- Code exercise: 15
- Multiple choice: 6
- Match the pairs: 3
- Select all that apply: 3
- Fix the bug: 3
- Type the answer: 2
- Spot the bug: 1
- Predict the output: 1
- Reorder lines: 1
- Fill in the blank: 1
Aligned to
- Software Development Fundamentals
- SDF-PracticesSoftware Development Practices
- Software Engineering
- SE-ToolsTools and Environments
Proto Node Labs is not affiliated with or endorsed by ACM / IEEE-CS / AAAI. Exam names are trademarks of their owners.