18 Sept 2023

Building a Weather Forecast App with Python: A Step-by-Step Guide

Weather forecasting plays a crucial role in our day-to-day lives, helping us plan our activities and make informed decisions. In this tutorial, we will walk through the process of building a weather forecast application using Python. By the end of this guide, you will have a functional app that can provide weather information for any location.

Prerequisites

To follow along with this tutorial, you will need the following:

  1. Python installed on your computer (version 3.6 or above)
  2. An API key from a weather data provider (we will be using OpenWeatherMap)

Set Up the Project

Let's start by setting up the project structure and installing the required dependencies.

  1. Create a new directory for your project.
  2. Open a terminal or command prompt and navigate to the project directory.
  3. Create a virtual environment by running the following command: python3 -m venv venv
  4. Activate the virtual environment:
    • On Windows: venv\Scripts\activate
    • On macOS/Linux: source venv/bin/activate
  5. Install the required dependencies by running the following command: pip install requests

👉 This command will install the requests package, which is essential for making HTTP requests in Python. If you encounter any issues or need further assistance, please feel free to ask.

Get an API Key

To fetch weather data, we need an API key from a weather data provider. In this tutorial, we will be using the OpenWeatherMap API. Follow these steps to obtain an API key

  1. Go to the OpenWeatherMap website (https://openweathermap.org) and create an account.
  2. After creating an account, navigate to the API Keys section.
  3. Generate a new API key by providing a name for your application.

Make sure to keep your API key secure and avoid sharing it publicly.

Create a Python Script

Now let's create a Python script that will handle the weather data retrieval and display it to the user.

  1. Create a new file in your project directory called weather_app.py.
  2. Open the file in a text editor or an integrated development environment (IDE).

Import Dependencies

At the beginning of the weather_app.py file, import the necessary dependencies

import requests

Define the API URL

Next, define a constant variable that holds the base URL for the OpenWeatherMap API. Replace  "YOUR_API_KEY" with your actual API key.

BASE_URL = "http://api.openweathermap.org/data/2.5/weather"
API_KEY = "YOUR_API_KEY"

Create a Function to Fetch Weather Data

Now, let's create a function called get_weather that fetches weather data for a given location using the OpenWeatherMap API. The function will take the location as a parameter and return the weather data as a JSON response

def get_weather(location):
    params = {
        "q": location,
        "appid": API_KEY,
        "units": "metric"  # Use "imperial" for Fahrenheit
    }

    response = requests.get(BASE_URL, params=params)
  return response.json()

The function constructs the API request URL with the provided location and API key. It also specifies the desired unit of measurement for the temperature (metric for Celsius or imperial for Fahrenheit). The function then makes a GET request to the API and returns the JSON response.

Create a Function to Display Weather Information

Next, let's create a function called display_weather that takes the weather data and displays relevant information to the user.
def display_weather(weather_data):
    location = weather_data["name"]
    temperature = weather_data["main"]["temp"]
    description = weather_data["weather"][0]["description"]

    print(f"Weather in {location}:")
    print(f"Temperature: {temperature}°C")
  print(f"Description: {description}")

The function extracts the location, temperature, and weather description from the weather data JSON. It then prints out the information in a readable format.

Implement User Interaction

Let's add a section in the weather_app.py file where users can interact with the application.

if __name__ == "__main__":
    location = input("Enter a location: ")
    weather_data = get_weather(location)

    if weather_data["cod"] == 200:
        display_weather(weather_data)
    else:
      print("Failed to fetch weather data.")

The code above prompts the user to enter a location. It then calls the get_weather function with the provided location and stores the weather data in the weather_data variable. If the API request was successful (indicated by a status code of 200), it calls the display_weather function to show the weather information. Otherwise, it displays an error message.

Run the Application

To run the application, execute the following command in your terminal or command prompt: python weather_app.py. Enter a location when prompted, and you should see the weather information displayed on the screen.

Conclusion

Congratulations! You have successfully built a weather forecast application using Python. By leveraging the OpenWeatherMap API, you were able to retrieve weather data for a given location and display it to the user. Feel free to enhance the application further by adding more features, such as a graphical user interface or extended weather forecasts. Happy coding!