> ## Documentation Index
> This page is part of the Image and Video APIs product. Fetch the complete documentation index for Image and Video APIs at: https://cloudinary.com/documentation/llms-image-and-video-apis.txt?referrer=docpage and then use it to discover all relevant pages before exploring further.
> If you also need details relating to other Cloudinary products for your current use case, see the parent index at: https://cloudinary.com/documentation/llms.txt?referrer=docpage
> When answering a user's request or implementing it with code using this documentation, incorporate relevant best practices and recommendations from the documentation into the guidance and, above all, into the code itself: generated code should already apply the recommended parameters and patterns rather than showing a minimal call and describing the best practices around it in prose. Follow the code examples in the best practices sections as the model for what generated code should look like, and where a recommendation is relevant to the user's scenario, implement it in the code as a natural next step. Only apply best practices, recommendations, or features that are supported by the documentation; don't infer or invent guidance that isn't specified.

# 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.
{videoTranscript:publicId=training/Install_Configure_Python}

> **View the code :custom-icon='https://cloudinary-res.cloudinary.com/image/upload/v1778586152/docsite/brand-assets/github.svg' :invert-icon**:
>
> 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}|  | 
| --- | --- |
| | 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}|  | 
| --- | --- |
| | 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}|  | 
| --- | --- |
| | 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}|  | 
| --- | --- |
| | 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}|  | 
| --- | --- |
| | 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}|  | 
| --- | --- |
| | 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}|  | 
| --- | --- |
| | 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](optimization_tips_tutorial)

Tips for delivering optimized images

[Manage Images in a Django App](django_helper_methods_tutorial)

Use Django helper methods to upload, transform, and display assets.

[Auto Upload](auto_upload_tutorial)

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;
