Environments and Dependencies

projects-and-environments
Use virtual environments, install packages, and understand pyproject.toml.
  • Level: Beginner to intermediate
  • Estimated time: 35–50 minutes
  • You will learn: Use virtual environments, install packages, and understand pyproject.toml.
  • Practice in: VS Code and the terminal

Questions

  • What problem does Environments and Dependencies help us solve in a small Python program?
  • What should we predict before running the example?
  • What value, output, or error should we inspect after changing one line?

Objectives

  • Run a complete example for environments and dependencies in Colab.
  • Explain the example line by line using plain language.
  • Change one part of the code and predict the result before running it.
  • Recognize one common mistake and use the error message as evidence.

Hands-on episode: Environments and Dependencies

A dependency is external code your project needs. An environment is the Python interpreter plus installed packages used for one project.

We will learn this by running code, not by memorizing a definition first. Open the Colab notebook from the button above, find this section, and run each cell in order. Keep a small note beside the notebook with three columns: prediction, actual result, and what changed.

Example 1.1

Read these commands as a reproducible setup story, not as magic terminal incantations.

python -m venv .venv
python -m pip install pandas
python -m pip freeze > requirements.txt

Run the cell once without editing it. If the result is different from your prediction, leave the prediction visible and write one sentence about the difference. That sentence is more useful than a perfect first guess.

Explain Example 1.1

  • The first command creates a local environment folder for this project.
  • The second command installs a package using the selected Python interpreter.
  • The third command records installed package versions so another person can recreate the setup.

Now explain the example out loud or in a Markdown cell. Use short sentences: “this line creates…”, “this name stores…”, “this output appears because…”. If you cannot explain a line yet, run only the lines above it and inspect the values that exist at that moment.

Challenge 1.1

NoteChallenge

After installing a package, run python -c "import pandas; print(pandas.__version__)". This verifies that the same interpreter can import the package.

Show a safe way to approach the challenge
  1. Copy Example 1.1 into a new Colab cell.
  2. Change exactly one value, name, condition, or line.
  3. Write the expected output before running the cell.
  4. Run the cell and compare the actual result with your prediction.
  5. If the result surprises you, undo the change and try a smaller one.

Suggested first move: After installing a package, run python -c "import pandas; print(pandas.__version__)".

Debugging checkpoint 1.1

WarningDebugging checkpoint

The most common environment bug is using one Python to install and another Python to run. Always check the interpreter path in VS Code, Jupyter, and the terminal. Recording dependencies is part of the project, not an optional cleanup step.

Do not debug by rewriting the whole example. Read the error type or surprising output, inspect the closest value with print(...) or type(...), then change one thing. This is the same routine you will use in larger projects.

Apply it

Create a tiny environment, install one library, verify the import, record dependencies, and write down the exact commands another learner would need to repeat your setup.

Finish by adding a Markdown cell that answers: What did this example teach me that I can reuse in a project?

Key points

  • Learn the concept by running a complete, small example first.
  • Predict before execution so your thinking becomes visible.
  • Change one thing at a time so cause and effect stay clear.
  • Treat errors as clues about the exact line or value Python could not handle.

Why this matters

Use virtual environments, install packages, and understand pyproject.toml.

This lesson combines related subtopics that belong together in one learning conversation. You will still pause for a quiz after each section, but you do not need to jump between separate pages while building one clear explanation.

NoteGuiding questions

By the end of this lesson, you should be able to answer:

  • How do the sections in Environments and Dependencies fit together?
  • Which small example demonstrates each section?
  • Which debugging clue should I check first for each section?
NoteLearning objectives

You will practice how to:

  • explain the shared concept for this lesson;
  • use each section as one step in a larger workflow;
  • complete 3 short section quizzes before moving on;
  • connect examples, mistakes, and debugging routines.

Lesson map

  • 1. Virtual Environments — Create isolated Python environments for project dependencies.
  • 2. Installing Packages — Install third-party libraries and record what your project needs.
  • 3. pyproject.toml — Understand the configuration file used by modern Python projects.

How environments connect tools and packages

A virtual environment keeps one project’s interpreter and installed packages separate from other projects.

flowchart TD
  project["project folder"] --> venv[".venv<br/>virtual environment"]
  venv --> python["Python interpreter"]
  venv --> packages["installed packages<br/>numpy, pandas, pytest"]
  project --> pyproject["pyproject.toml<br/>dependency list"]
  system["system Python"] -. separate from .-> venv

When imports fail, check which Python interpreter is active before reinstalling packages.

1. Virtual Environments

Create isolated Python environments for project dependencies.

TipAnalogy

A virtual environment is a separate lunchbox: one project’s ingredients do not spill into another’s.

What this means

A virtual environment gives one project its own installed packages.

Example 1

Predict what will happen before you run the code.

python -m venv .venv
source .venv/bin/activate
python -m pip install requests

Step-by-step explanation

  1. python -m venv .venv — pause here and say what this line reads, creates, changes, or displays.
  2. source .venv/bin/activate — pause here and say what this line reads, creates, changes, or displays.
  3. python -m pip install requests — pause here and say what this line reads, creates, changes, or displays.

After running the example, compare the actual output with your prediction. If they differ, do not erase your prediction. The difference is the part that can teach you the most.

Challenge

NotePractice

Change one input value, predict the new output, run the code, and explain the difference in one sentence.

Show one possible solution path
  1. Copy Example 1 into Colab, Jupyter, or a .py file.
  2. Mark the line you plan to change.
  3. Write a one-sentence prediction.
  4. Run the changed code.
  5. If the result surprises you, restore the original and change a smaller part.

The goal is not to find the only correct answer. The goal is to create a small experiment where you can explain cause and effect.

Common mistakes

WarningCommon mistake

Installing packages before activating the environment often installs them in the wrong place. Check which python.

When you get stuck, use this debugging routine:

  1. Read the last line of the error message or inspect the unexpected output.
  2. Find the smallest line of code that could be responsible.
  3. Print or inspect the value and type at that point.
  4. Change one thing.
  5. Run again and record what changed.

Check your understanding

This quiz checks the ideas in this section before you move on.

2. Installing Packages

Install third-party libraries and record what your project needs.

TipAnalogy

Installing a package is borrowing a specialized tool from a community workshop.

What this means

Packages extend Python with code written by other people.

Example 2

Predict what will happen before you run the code.

python -m pip install numpy
python -m pip show numpy

Step-by-step explanation

  1. python -m pip install numpy — pause here and say what this line reads, creates, changes, or displays.
  2. python -m pip show numpy — pause here and say what this line reads, creates, changes, or displays.

After running the example, compare the actual output with your prediction. If they differ, do not erase your prediction. The difference is the part that can teach you the most.

Challenge

NotePractice

Change one input value, predict the new output, run the code, and explain the difference in one sentence.

Show one possible solution path
  1. Copy Example 1 into Colab, Jupyter, or a .py file.
  2. Mark the line you plan to change.
  3. Write a one-sentence prediction.
  4. Run the changed code.
  5. If the result surprises you, restore the original and change a smaller part.

The goal is not to find the only correct answer. The goal is to create a small experiment where you can explain cause and effect.

Common mistakes

WarningCommon mistake

Use python -m pip so pip belongs to the Python interpreter you are using.

When you get stuck, use this debugging routine:

  1. Read the last line of the error message or inspect the unexpected output.
  2. Find the smallest line of code that could be responsible.
  3. Print or inspect the value and type at that point.
  4. Change one thing.
  5. Run again and record what changed.

Check your understanding

This quiz checks the ideas in this section before you move on.

3. pyproject.toml

Understand the configuration file used by modern Python projects.

TipAnalogy

pyproject.toml is a project recipe card: name, ingredients, tools, and rules in one place.

What this means

pyproject.toml records project metadata, dependencies, and tool configuration.

Example 3

Predict what will happen before you run the code.

[project]
name = "my-project"
version = "0.1.0"
dependencies = ["numpy"]

Step-by-step explanation

  1. [project] — pause here and say what this line reads, creates, changes, or displays.
  2. name = "my-project" — pause here and say what this line reads, creates, changes, or displays.
  3. version = "0.1.0" — pause here and say what this line reads, creates, changes, or displays.
  4. dependencies = ["numpy"] — pause here and say what this line reads, creates, changes, or displays.

After running the example, compare the actual output with your prediction. If they differ, do not erase your prediction. The difference is the part that can teach you the most.

Challenge

NotePractice

Change one input value, predict the new output, run the code, and explain the difference in one sentence.

Show one possible solution path
  1. Copy Example 1 into Colab, Jupyter, or a .py file.
  2. Mark the line you plan to change.
  3. Write a one-sentence prediction.
  4. Run the changed code.
  5. If the result surprises you, restore the original and change a smaller part.

The goal is not to find the only correct answer. The goal is to create a small experiment where you can explain cause and effect.

Common mistakes

WarningCommon mistake

Configuration files are read by tools. A typo may not fail until that tool runs.

When you get stuck, use this debugging routine:

  1. Read the last line of the error message or inspect the unexpected output.
  2. Find the smallest line of code that could be responsible.
  3. Print or inspect the value and type at that point.
  4. Change one thing.
  5. Run again and record what changed.

Check your understanding

This quiz checks the ideas in this section before you move on.

Notebook and Colab practice

Open a blank notebook at https://colab.new. Use one section at a time: copy the Example 1, predict the result, run it, answer the section quiz, and then move to the next section. This is better than copying the entire page at once.

Instructor note

Teaching notes
  • Treat each section as a short teaching episode.
  • Pause for the section quiz before introducing the next section.
  • Ask learners to compare sections: what stayed the same, and what changed?
  • If time is short, teach the first two sections live and assign the rest as practice.

Key points

TipKey points
  • Virtual Environments: A virtual environment gives one project its own installed packages.
  • Installing Packages: Packages extend Python with code written by other people.
  • pyproject.toml: pyproject.toml records project metadata, dependencies, and tool configuration.
  • Use the section quizzes as gates: review before moving on if a quiz feels uncertain.

References

  • Python modules tutorial: https://docs.python.org/3/tutorial/modules.html
  • venv documentation: https://docs.python.org/3/library/venv.html
  • argparse documentation: https://docs.python.org/3/library/argparse.html
  • Python Tutorial: https://docs.python.org/3/tutorial/
  • Quarto OJS documentation: https://quarto.org/docs/interactive/ojs/
  • ipywidgets documentation: https://ipywidgets.readthedocs.io/en/stable/
Back to top