> ## Documentation Index
> Fetch the complete documentation index at: https://cloudinary.com/documentation/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure the Python SDK (video tutorial)

[githublink]: https://github.com/cloudinary-community/cloudinary-examples/tree/main/examples/python-image-upload

## Overview

Learn how to install and configure the [Cloudinary Python SDK](django_integration) in your Python environment. This will enable you to utilize Cloudinary for uploading, managing, and displaying assets in your applications.

## Video tutorial

  This video is brought to you by Cloudinary's video player - embed your own!Use the controls to set the playback speed, navigate to chapters of interest and select subtitles in your preferred language.

> **TIP**: :title=View the code

You can find the code from this tutorial in [GitHub][githublink].
## Tutorial contents
This tutorial presents the following topics. Click a timestamp to jump to that part of the video.### Introduction
{table:class=tutorial-bullets}|  | 
| --- | --- |
|{videotime:id=media :min=0 :sec=00 :player=cld} | The [Cloudinary Python SDK](django_integration) gives you a way to handle images and videos at scale, providing transformation, optimization and delivery capabilities that you can integrate seamlessly into your Python applications. 
|

### Install the Python SDK
{table:class=tutorial-bullets}|  | 
| --- | --- |
|{videotime:id=media :min=0 :sec=17 :player=cld} | To install the Cloudinary Python SDK in your virtual environment, in a terminal run `pip install cloudinary`. Once Cloudinary is installed, you should see it listed as a requirement in your `requirements.txt` file inside your Python project.
|

### Configure Cloudinary
{table:class=tutorial-bullets}|  | 
| --- | --- |
|{videotime:id=media :min=0 :sec=28 :player=cld} | First, import the Cloudinary library. Then, add your Cloudinary credentials by creating a Cloudinary instance using `cloudinary.config()`. At minimum, you'll need to provide your cloud name to access your stored images. Find your cloud name in the [Dashboard](https://console.cloudinary.com/app/home/dashboard). As an additional tip, include the `secure=True` parameter to ensure that the URLs generated by Cloudinary are HTTPS. 
|

> **NOTE**:
>
> You can no longer access your full credentials directly from the Dashboard. Find your **Cloud name** on the Dashboard, and all credentials, including **API Key**, **API Secret**, and **API environment variable**, on the [API Keys](https://console.cloudinary.com/app/settings/api-keys) page of the Cloudinary Console Settings.

```python
import cloudinary

cloudinary.config(
    cloud_name = "<your_cloud_name>",
    secure = True
)
```

### Retrieve an image tag from Cloudinary
{table:class=tutorial-bullets}|  | 
| --- | --- |
|{videotime:id=media :min=1 :sec=11 :player=cld} | Now, you can start using Cloudinary. For instance, you can use the `cloudinary.image` method to fetch an image tag from Cloudinary and exhibit it in your application. Simply indicate the image you want to use by specifying its public ID, accessible from the **Summary** tab of the asset's Preview Pane in the [Media Library](https://console.cloudinary.com/console/media_library/search). (Replace `<public_ID>` with a public ID of an image from your product environment.)
|

```python
image_tag = cloudinary.CloudinaryImage("<public_ID>").image()
```

### Configuring for upload and management
{table:class=tutorial-bullets}|  | 
| --- | --- |
|{videotime:id=media :min=1 :sec=28 :player=cld} | To upload to Cloudinary or manage your files, you'll need to import the Cloudinary `cloudinary.uploader` and `cloudinary.api` libraries. Additionally, ensure your API key and secret are added to the configuration. Save your Cloudinary API key and secret as environment variables in a `.env` file. Then, install and import the `dotenv` library to load them into your project. Use the `load dotenv` function to make these environment variables accessible and import the `os` library to handle them. Now, you can pass the API key and secret to the `cloudinary.config` function, creating a fully authenticated instance. (Replace the placeholders in the example below with your credentials.)
|

```python
import cloudinary.uploader
import cloudinary.api
from dotenv import load_dotenv
import os

lod_dotenv()

cloudinary.config(
    cloud_name = "<your_cloud_name>",
    api_key = os.getenv("CLOUDINARY_API_KEY")
    api_key = os.getenv("CLOUDINARY_API_SECRET")
    secure = True
)
```

.env

```python
CLOUDINARY_API_KEY = <your_api_key>
CLOUDINARY_API_SECRET = <your_api_secret>
```

> **INFO**:
>
> * When writing your own applications, follow your organization's policy on storing secrets and don't expose your API secret.

> * Don't store your `.env` under version control for maximum security.

### Simplified method
{table:class=tutorial-bullets}|  | 
| --- | --- |
|{videotime:id=media :min=2 :sec=14 :player=cld} | Alternatively, if you copy the Cloudinary environment variable into your `.env` file, simply loading its contents using the `load.env` function is sufficient. In this case, you won't need to manually create a Cloudinary instance using the `cloudinary.config` function. (Replace the placeholders in the example below with your credentials.)
|

```python
import cloudinary.uploader
import cloudinary.api
from dotenv import load_dotenv
import os

lod_dotenv()

```

.env

```python
CLOUDINARY_ENVIRONMENT_VARIABLE = <your_environment_variable>
```

### Using backend capabilities like upload and manage
{table:class=tutorial-bullets}|  | 
| --- | --- |
|{videotime:id=media :min=2 :sec=33 :player=cld} | Once completed, you can leverage backend capabilities to upload and manage your Cloudinary media files from your Python app. For instance, you can utilize `cloudinary.uploader.upload` to upload an image either from a local file or a URL. Additionally, you can retrieve detailed information on an image by calling the Cloudinary API `resource` endpoint. Remember to specify the image you want by using its public ID.
|

```python
image_upload = cloudinary.uploader.upload("<file_path>")
image_info = cloudinary.api.resource("<public_id>")
```

## Keep learning

> **READING**:
>
> * Learn more about the [Python SDK](django_integration).

> * Watch more [Dev Hints videos](https://www.youtube.com/playlist?list=PL8dVGjLA2oMpaTbvoKCaRNBMQzBUIv7N8) on the [Cloudinary YouTube channel](https://www.youtube.com/cloudinary).

#### If you like this, you might also like...

  
  
  
    Optimization Tips
    Tips for delivering optimized images 
  

  
  
  
    Manage Images in a Django App
    Use Django helper methods to upload, transform, and display assets. 
  

  
  
  
    Auto Upload
    Automatically upload remote images and videos to Cloudinary 
  

&nbsp;

&nbsp;Check out the Cloudinary Academy for free self-paced Cloudinary courses on a variety of developer or DAM topics, or register for formal instructor-led courses, either virtual or on-site.
&nbsp;
