> ## Documentation Index
>
> Fetch the complete documentation index at: [https://help.hyperscience.ai/llms.txt](https://help.hyperscience.ai/llms.txt)
>
> Use this file to discover all available pages before exploring further.

# Developing Flows

- Updated on May 6, 2026
- Published on Sep 26, 2025

- 41 minute(s) read

Print

Copy pageCopy as Markdown for LLMsView as MarkdownView the page as plain text

Open in ChatGPTAsk ChatGPT about this pageOpen in ClaudeAsk Claude about this page

[Prev](https://help.hyperscience.ai/deployment/docs/limiting-task-parallelism-in-flow-runs "Limiting Task Parallelism in Flow Runs")[Next](https://help.hyperscience.ai/deployment/docs/recursion-in-nested-subflows "Recursion in Nested Subflows")

If your organization develops and customizes flows, you can give your System Admins additional permissions by adding the “.env” file variables described in the sections below.

## Uploading blocks and editing Custom Code Blocks

By default, the _ALLOW\_CODE\_UPLOAD_ “.env” file variable is set to _true_, which allows System Admins to upload flow blocks and edit the code for Custom Code Blocks. If you want to prevent System Admins from completing these tasks, set _ALLOW\_CODE\_UPLOAD_ to _false_.

To learn more about uploading flow blocks, contact your Hyperscience representative.

For more information on editing code in Custom Code Blocks, see “Modifying Custom Code Blocks” for your version of Hyperscience ( [v38](https://help.hyperscience.ai/v38/docs/modifying-custom-code-blocks) \| [v39](https://help.hyperscience.ai/v39/docs/modifying-custom-code-blocks) \| [v40](https://help.hyperscience.ai/v40/docs/modifying-custom-code-blocks) \| [v41](https://help.hyperscience.ai/v41/docs/modifying-custom-code-blocks) \| [v42](https://help.hyperscience.ai/v42/docs/modifying-custom-code-blocks) \| [v43](https://help.hyperscience.ai/v43/docs/modifying-custom-code-blocks) ).

## Managing third-party Python packages

We support the use of:

- Python 3.9 and Python 3.11 in Hyperscience v39.1-v40,

- Python 3.9, 3.11, and 3.12 in Hyperscience v41-v42.1,

- Python 3.11, 3.12, and 3.13 in v42.2-v42.3, and

- Python 3.12 and 3.13 in v43.

This support allows you to upgrade your flows and code blocks separately from the application-upgrade process, giving you the opportunity to test and upgrade your flows in the application before support for older Python versions is removed.

Because of this multiple-version support in v39.1 and later, the steps for managing third-party Python packages in these versions differ from those used in previous versions of Hyperscience.

**v43**

### v43

#### Support for Python 3.12 in v43

While the use of Python 3.12 and 3.13 is supported in v43, the runtime for Python 3.12 is only installed if there are flows with blocks that require it. At runtime, the system detects which Python versions your flows are using. If any of them are using Python 3.12, the system makes the Python 3.12 runtime available to them. After you've updated those flows to use Python 3.13, and the Python 3.12 runtime is no longer needed, it is removed from the system. You do not need to take any action to install or remove the runtime for Python 3.12.

Regardless of whether your flows and packages use Python 3.12, the Python Packages page still has sections for Python 3.12 and 3.13.

If developers at your organization are creating Code Blocks for your flows, they may want to install custom Python packages to add features to the blocks. System Admins can install and manage these packages on behalf of your developers.

### Viewing installed Python packages

To find out which Python packages are currently installed in your application, go to **Flows** \> **Python Packages**. You can use the **Search** text box at the top of the page to search for a specific package by its name.

The Python Packages page contains several lists of packages.

#### Summary of User Installed Packages

In the **Summary of User Installed Packages** card, you can find a list of all the packages users at your organization have installed in your instance. Each row in the table shows the name of an installed package and indicates its compatibility with Python 3.12 and 3.13.

The system may have created copies of packages installed for Python 3.12 to make them accessible to flows using Python 3.13. We recommend testing these packages to ensure they work in Python 3.13 flows and updating them if newer versions are available. For more information on updating packages, see [Updating Python packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#updating-python-packages).

Selecting the **Show system-installed packages** option adds any pre-installed packages to the table, giving you a complete list of packages in your instance, along with information about their compatibility with our supported Python versions.

#### Installed Packages for Python 3.13

The packages in the **Installed Packages for Python 3.13** card are available to flows using Python 3.13. By default, it shows only those packages that were installed by users at your organization. To see a list of all Python 3.13 packages, select the **Show system-installed packages** option.

The table contains the following information for each package:

- The package's name. If information about the package is available on an external website, clicking the name redirects you to that website.

- Whether the package was pre-installed, or, if it was not, the date and time it was added

- The version of the package

- If the package was not pre-installed, links to download or delete the package

You can also sort the table by the names of the packages and the dates they were added.

If the system copied packages from Python 3.12, their rows in the table will have a yellow background. We recommend checking for newer versions of these packages and testing them in your flows to ensure compatibility with Python 3.13.

#### Installed Packages for Python 3.12

The packages shown here are available to flows using Python 3.12. This card is similar to the **Installed Packages for Python 3.13** card — by default, only user-installed packages are listed, but you can select the **Show system-installed packages** option to see all of the available Python 3.12 packages.

The same table-layout and -sorting options described for the **Installed Packages for Python 3.13** card apply to this card, as well.

#### Adding packages

While several Python packages are installed in the Hyperscience application by default, developers at your organization may want to upload additional packages to meet their flow-development needs. If you are a System Admin, you can edit the application's ".env" file to allow the uploading of these packages. Then, you can upload custom Python packages on behalf of your developers.

##### Package requirements

The packages you install must be compatible with Python 3.12 or 3.13. If the package has any dependencies, you must also install those packages.

##### Enable package uploading in the application

Your application may already allow you to upload Python packages. To find out, go to **Flows** \> **Python Packages**.

- If the message at the top of the page ends with "To add more packages, please download or build a **Python wheel (.whl)** file, then upload below with the Add Packages button," your application already has package uploading enabled. You do not need to make any changes to your application's ".env" file, and you can follow the steps in [Upload custom Python packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#upload-custom-python-packages) below.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

- If the message at the top of the page ends with "Adding packages is currently disabled. Set **HS\_ALLOW\_EXTERNAL\_PYTHON\_PACKAGES\_UPLOAD** to enable," you need to update your application's ".env" file before uploading packages.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

To enable package uploading in the application:

1. Add the _HS\_ALLOW\_EXTERNAL\_PYTHON\_PACKAGES\_UPLOAD_ variable to your ".env" file and set it to _true_.

- To learn how to make changes to the ".env" file, see [Editing the ".env" file and running the application](https://help.hyperscience.ai/deployment/docs/editing-the-env-file-and-running-the-application).
2. After you've updated the ".env" file, go to **Flows** \> **Python Packages**, and make sure the message at the top of the page ends with "To add more packages, upload through the 'Add Packages' button."

- If it does, you can follow the steps in [Upload custom Python packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#upload-custom-python-packages) below to begin uploading packages.

- If it does not, double-check the content of your ".env" file to make sure you entered the new variable and its value correctly.

#### Upload custom Python packages

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in one of the **Installed Packages** cards.

2. Do one of the following:

- Drag and drop the package's wheel ( _.whl_) file into the **Add Python Packages** dialog box.

- Click **Browse**, and find and open the package's wheel ( _.whl_) file on your machine.
3. If you would like to upload additional packages, click **Add More Files** to drag-and-drop or open more files. Otherwise, click **Upload**.

The package appears in the **Installed Packages** card whose **Add Package** button you clicked to upload the packages.

#### Updating Python packages

You cannot update pre-installed packages.

If you would like to update a Python package that a user has installed in your application, you can do so by following the steps below:

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in one of the **Installed Packages** cards.

2. Do one of the following:

- Drag and drop the updated package's wheel ( _.whl_) file into the **Add Python Packages** dialog box.

- Click **Browse**, and find and open the updated package's wheel ( _.whl_) file on your machine.
3. If you would like to update additional packages, click **Add More Files** to drag-and-drop or open more files. Otherwise, click **Upload**.

4. For each updated package, you are asked to confirm whether or not you want to overwrite the current package with its new version. To do so, click **Confirm**.

The package's **Date Added** and **Version** values are updated in the table in the **Installed Packages** card.

#### Downloading user-installed packages

You can download individual user-installed Python packages or all user-installed packages for a particular version of Python. You cannot download pre-installed packages.

##### Download all user-installed packages for a Python version

To download all the user-installed packages for a particular version of Python:

1. Go to **Flows** \> **Python Packages**, and click the menu ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in one of the **Installed Packages** cards.

2. Click **Download user installed packages**.

The file's name is in the format _python\_packages\_\[3.12 or 3.13\]\_YYYYMMDD-HHMMSS.zip_, where _YYYYMMDD_ is the year, month, and date of the download and _HHMMSS_ is the hour, minutes, and seconds of the download's time in UTC time.

##### Download an individual package

You can download individual packages that you've previously uploaded. This process can be helpful when migrating your custom packages from one environment to another.

To download an individual package, go to **Flows** \> **Python Packages**, and click the **Download Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in the Python 3.12 or Python 3.13 table.

The downloaded file's name matches the name of the uploaded wheel file.

#### Deleting a custom package

You cannot delete pre-installed packages.

If you no longer need a custom package, you can delete it from the application.

Go to **Flows** \> **Python Packages**, and click the **Uninstall Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in the Python 3.12 or Python 3.13 table.

#### Downloading _requirements.txt_ for a Python version

Downloading a _requirements.txt_ file for a Python version can help your developers know exactly which packages are available to them as they develop flows for your organization, as well as the installed versions of those packages. They can then use the file to download the packages to their local environments.

To download _requirements.text_ for a particular version of Python:

1. Go to **Flows** \> **Python Packages**, and click the menu ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the Python 3.12 or Python 3.13 card.

2. Click **Download as requirements.txt**.

The _requirements.txt_ file is downloaded to your machine.

**v42.2-v42.3**

### v42.2-v42.3

#### Support for Python 3.11 in v42.2 and later

While the use of Python 3.11, 3.12, and 3.13 is supported in v42.2-v42.3, the runtime for Python 3.11 is only installed if there are flows with blocks that require it. At runtime, the system detects which Python versions your flows are using. If any of them are using Python 3.11, the system makes the Python 3.11 runtime available to them. After you've updated those flows to use Python 3.12 or 3.13, and the Python 3.11 runtime is no longer needed, it is removed from the system. You do not need to take any action to install or remove the runtime for Python 3.11.

Regardless of whether your flows and packages use Python 3.11, the Python Packages page still has sections for Python 3.11, 3.12, and 3.13.

### Viewing installed Python packages

The Python Packages page contains several lists of packages.

#### Summary of User Installed Packages

In the **Summary of User Installed Packages** card, you can find a list of all the packages users at your organization have installed in your instance. Each row in the table shows the name of an installed package and indicates its compatibility with Python 3.11, 3.12, and 3.13.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

The system may have created copies of packages installed for Python 3.11 to make them accessible to flows using Python 3.12 or 3.13. We recommend testing these packages to ensure they work in Python 3.12 and 3.13 flows and updating them if newer versions are available. For more information on updating packages, see [Updating Python packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#updating-python-packages).

#### Installed Packages for Python 3.13

The table contains the following information for each package:

- The package's name. If information about the package is available on an external website, clicking the name redirects you to that website.

- Whether the package was pre-installed, or, if it was not, the date and time it was added

- The version of the package

- If the package was not pre-installed, links to download or delete the package

You can also sort the table by the names of the packages and the dates they were added.

#### Installed Packages for Python 3.12

The same table-layout and -sorting options described for the **Installed Packages for Python 3.13** card apply to this card, as well.

#### Installed Packages or Python 3.11

These packages are available to flows using Python 3.11. Just as in the **Installed Packages for Python 3.13** card, you can select the **Show system-installed packages** option to show pre-installed packages in addition to the user-installed packages that are shown by default.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

The table’s layout and sorting options are the same as those described for the **Installed Packages for Python 3.13** card.

#### Adding packages

##### Package requirements

The packages you install must be compatible with Python 3.11, 3.12, or 3.13. If the package has any dependencies, you must also install those packages.

##### Enable package uploading in the application

Your application may already allow you to upload Python packages. To find out, go to **Flows** \> **Python Packages**.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

To enable package uploading in the application:

1. Add the _HS\_ALLOW\_EXTERNAL\_PYTHON\_PACKAGES\_UPLOAD_ variable to your ".env" file and set it to _true_.

- If it does not, double-check the content of your ".env" file to make sure you entered the new variable and its value correctly.

#### Upload custom Python packages

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in one of the **Installed Packages** cards.

2. Do one of the following:

- Drag and drop the package's wheel ( _.whl_) file into the **Add Python Packages** dialog box.

The package appears in the **Installed Packages** card whose **Add Package** button you clicked to upload the packages.

#### Updating Python packages

You cannot update pre-installed packages.

If you would like to update a Python package that a user has installed in your application, you can do so by following the steps below:

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in one of the **Installed Packages** cards.

2. Do one of the following:

- Drag and drop the updated package's wheel ( _.whl_) file into the **Add Python Packages** dialog box.

The package's **Date Added** and **Version** values are updated in the table in the **Installed Packages** card.

#### Downloading user-installed packages

##### Download all user-installed packages for a Python version

To download all the user-installed packages for a particular version of Python:

2. Click **Download user installed packages**.

The file's name is in the format _python\_packages\_\[3.11, 3.12, or 3.13\]\_YYYYMMDD-HHMMSS.zip_, where _YYYYMMDD_ is the year, month, and date of the download and _HHMMSS_ is the hour, minutes, and seconds of the download's time in UTC time.

##### Download an individual package

To download an individual package, go to **Flows** \> **Python Packages**, and click the **Download Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in the Python 3.11, Python 3.12, or Python 3.13 table.

The downloaded file's name matches the name of the uploaded wheel file.

#### Deleting a custom package

You cannot delete pre-installed packages.

If you no longer need a custom package, you can delete it from the application.

Go to **Flows** \> **Python Packages**, and click the **Uninstall Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in the Python 3.11, Python 3.12, or Python 3.13 table.

#### Downloading _requirements.txt_ for a Python version

To download _requirements.text_ for a particular version of Python:

1. Go to **Flows** \> **Python Packages**, and click the menu ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the Python 3.11, Python 3.12, or Python 3.13 card.

2. Click **Download as requirements.txt**.

The _requirements.txt_ file is downloaded to your machine.

**v41-42.1**

### v41

#### Support for Python 3.9 and 3.11 in v41

While v41-v42.1 supports the use of Python 3.9, 3.11, and 3.12, the runtimes for Python 3.9 and 3.11 are only installed if there are flows with blocks that require them. At runtime, the system detects which Python versions your flows are using. If any of them are using Python 3.9 or 3.11, the system makes the respective runtime available to them. After you've updated those flows to use Python 3.12, and the Python 3.9 and 3.11 runtimes are no longer needed, the runtimes are removed from the system. You do not need to take any action to install or remove the runtime for Python 3.9 or 3.11.

Regardless of whether your flows and packages use Python 3.9 or 3.11, the Python Packages page still has sections for Python 3.9, 3.11, and 3.12.

### Viewing installed Python packages

The Python Packages page contains several lists of packages.

#### Summary of User Installed Packages

In the **Summary of User Installed Packages** card, you can find a list of all the packages users at your organization have installed in your instance. Each row in the table shows the name of an installed package and indicates its compatibility with Python 3.9, Python 3.11, and Python 3.12.

The system may have created copies of packages installed for Python 3.9 or 3.11 to make them accessible to flows using Python 3.12. We recommend testing these packages to ensure they work in Python 3.12 flows and updating them if newer versions are available. For more information on updating packages, see [Updating Python packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#updating-python-packages).

#### Installed Packages for Python 3.12

The packages in the **Installed Packages for Python 3.12** card are available to flows using Python 3.12. By default, it shows only those packages that were installed by users at your organization. To see a list of all Python 3.12 packages, select the **Show system-installed packages** option.

The table contains the following information for each package:

- The package's name. If information about the package is available on an external website, clicking the name redirects you to that website.

- Whether the package was pre-installed, or, if it was not, the date and time it was added

- The version of the package

- If the package was not pre-installed, links to download or delete the package

You can also sort the table by the names of the packages and the dates they were added.

If the system copied packages from Python 3.9 or Python 3.11, their rows in the table will have a yellow background. We recommend checking for newer versions of these packages and testing them in your flows to ensure compatibility with Python 3.12.

#### Installed Packages for Python 3.11

The packages shown here are available to flows using Python 3.11. This card is similar to the **Installed Packages for Python 3.12** card — by default, only user-installed packages are listed, but you can select the **Show system-installed packages** option to see all of the available Python 3.12 packages.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

The same table-layout and -sorting options described for the **Installed Packages for Python 3.12** card apply to this card, as well.

#### Installed Packages for Python 3.9

These packages are available to flows using Python 3.9. Just as in the **Installed Packages for Python 3.11** card, you can select the **Show system-installed packages** option to show pre-installed packages in addition to the user-installed packages that are shown by default.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

The table’s layout and sorting options are the same as those described for the **Installed Packages for Python 3.12** card.

#### Adding packages

##### Package requirements

The packages you install must be compatible with Python 3.9, 3.11, or 3.12. If the package has any dependencies, you must also install those packages.

##### Enable package uploading in the application

Your application may already allow you to upload Python packages. To find out, go to **Flows** \> **Python Packages**.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

To enable package uploading in the application:

1. Add the _HS\_ALLOW\_EXTERNAL\_PYTHON\_PACKAGES\_UPLOAD_ variable to your ".env" file and set it to _true_.

- If it does not, double-check the content of your ".env" file to make sure you entered the new variable and its value correctly.

#### Upload custom Python packages

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in one of the **Installed Packages** cards.

2. Do one of the following:

- Drag and drop the package's wheel ( _.whl_) file into the **Add Python Packages** dialog box.

The package appears in the **Installed Packages** card whose **Add Package** button you clicked to upload the packages.

#### Updating Python packages

You cannot update pre-installed packages.

If you would like to update a Python package that a user has installed in your application, you can do so by following the steps below:

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in one of the **Installed Packages** cards.

2. Do one of the following:

- Drag and drop the updated package's wheel ( _.whl_) file into the **Add Python Packages** dialog box.

The package's **Date Added** and **Version** values are updated in the table in the **Installed Packages** card.

#### Downloading user-installed packages

##### Download all user-installed packages for a Python version

To download all the user-installed packages for a particular version of Python:

2. Click **Download user installed packages**.

The file's name is in the format _python\_packages\_\[3.9, 3.11, or 3.12\]\_YYYYMMDD-HHMMSS.zip_, where _YYYYMMDD_ is the year, month, and date of the download and _HHMMSS_ is the hour, minutes, and seconds of the download's time in UTC time.

##### Download an individual package

To download an individual package, go to **Flows** \> **Python Packages**, and click the **Download Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in the Python 3.9, Python 3.11, or Python 3.12 table.

The downloaded file's name matches the name of the uploaded wheel file.

#### Deleting a custom package

You cannot delete pre-installed packages.

If you no longer need a custom package, you can delete it from the application.

Go to **Flows** \> **Python Packages**, and click the **Uninstall Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in the Python 3.9, Python 3.11, or Python 3.12 table.

#### Downloading _requirements.txt_ for a Python version

To download _requirements.text_ for a particular version of Python:

1. Go to **Flows** \> **Python Packages**, and click the menu ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the Python 3.9, Python 3.11, or Python 3.12 card.

2. Click **Download as requirements.txt**.

The _requirements.txt_ file is downloaded to your machine.

**v40**

### v40

#### Support for Python 3.9 in v40

While v40 does support the use of both Python 3.9 and Python 3.11, the Python 3.9 runtime is only installed if there are flows with blocks that require it. At runtime, the system detects which Python versions your flows are using. If any of them are using Python 3.9, the system makes the runtime available to them. After you've updated those flows to use Python 3.11, and the Python 3.9 runtime is no longer needed, the runtime is removed from the system. You do not need to take any action to install or remove the Python 3.9 runtime.

Regardless of whether your flows and packages use Python 3.9, the Python Packages page still has sections for both Python 3.9 and Python 3.11.

If developers at your organization are creating Python Code Blocks for your flows, they may want to install custom Python packages to add features to the blocks. System Admins can install and manage these packages on behalf of your developers.

### Viewing installed Python packages

The Python Packages page contains several lists of packages.

#### Summary of User Installed Packages

In the Summary of User Installed Packages card, you can find a list of all the packages users at your organization have installed in your instance. Each row in the table shows the name of an installed package and indicates its compatibility with Python 3.9 and Python 3.11.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

The system may have created copies of packages installed for Python 3.9 to make them accessible to flows using Python 3.11. We recommend testing these packages to ensure they work in Python 3.11 flows and updating them if newer versions are available. For more information on updating packages, see [Updating Python packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#updating-python-packages).

#### Installed Packages for Python 3.11

The packages in the Installed Packages for Python 3.11 card are available to flows using Python 3.11. By default, it shows only those packages that were installed by users at your organization. To see a list of all Python 3.11 packages, select the **Show system-installed packages** option.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

The table contains the following information for each package:

- The package's name. If information about the package is available on an external website, clicking the name redirects you to that website.

- Whether the package was pre-installed, or, if it was not, the date and time it was added

- The version of the package

- If the package was not pre-installed, links to download or delete the package

You can also sort the table by the names of the packages and the dates they were added.

#### Installed Packages for Python 3.9

These packages are available to flows using Python 3.9. Just as in the Installed Packages for Python 3.11 card, you can select the **Show system-installed packages** option to show pre-installed packages in addition to the user-installed packages that are shown by default.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

The table’s layout and sorting options are the same as those described for the Installed Packages for Python 3.11 card.

#### Adding packages

##### Package requirements

The packages you install must be compatible with Python 3.9 or 3.11. If the package has any dependencies, you must also install those packages.

##### Enable package uploading in the application

Your application may already allow you to upload Python packages. To find out, go to **Flows** \> **Python Packages**.

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

.png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D)

To enable package uploading in the application:

1. Add the _HS\_ALLOW\_EXTERNAL\_PYTHON\_PACKAGES\_UPLOAD_ variable to your ".env" file and set it to _true_.

- If it does not, double-check the content of your ".env" file to make sure you entered the new variable and its value correctly.

#### Upload custom Python packages

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in either of the Python 3.9 or Python 3.11 cards.

2. Do one of the following:

- Drag and drop the package's wheel ( _.whl_) file into the Add Python Packages dialog box.

The package appears in either the Installed Packages for Python 3.9 card or the Installed Packages for Python 3.11 card, depending on which **Add Package** button you clicked to upload the packages.

#### Updating Python packages

You cannot update pre-installed packages.

If you would like to update a Python package that a user has installed in your application, you can do so by following the steps below:

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in either of the Python 3.9 or Python 3.11 cards.

2. Do one of the following:

- Drag and drop the updated package's wheel ( _.whl_) file into the Add Python Packages dialog box.

The package's **Date Added** and **Version** values are updated in either the Python 3.9 table or the Python 3.11 table.

#### Downloading user-installed packages

##### Download all user-installed packages for a Python version

To download all the user-installed packages for a particular version of Python:

1. Go to **Flows** \> **Python Packages**, and click the menu ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in either of the Python 3.9 or Python 3.11 cards.

2. Click **Download user installed packages**.

The file's name is in the format _python\_packages\_\[3.11 or 3.9\]\_YYYYMMDD-HHMMSS.zip_, where _YYYYMMDD_ is the year, month, and date of the download and _HHMMSS_ is the hour, minutes, and seconds of the download's time in UTC time.

##### Download an individual package

To download an individual package, go to **Flows** \> **Python Packages**, and click the **Download Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in either the Python 3.9 table or the Python 3.11 table.

The downloaded file's name matches the name of the uploaded wheel file.

#### Deleting a custom package

You cannot delete pre-installed packages.

If you no longer need a custom package, you can delete it from the application.

Go to **Flows** \> **Python Packages**, and click the **Uninstall Package** button ( .png?sv=2026-02-06&spr=https&st=2026-07-27T09%3A02%3A04Z&se=2026-07-27T09%3A53%3A04Z&sr=c&sp=r&sig=6c3jwynez%2FXJVjGWKxXa3ID1kxOqse7woKPUNFZbCtA%3D) ) in the package's row in either the Python 3.9 table or the Python 3.11 table.

#### Downloading _requirements.txt_ for a Python version

Downloading a _requirements.txt_ file for Python 3.9 or Python 3.11 can help your developers know exactly which packages are available to them as they develop flows for your organization, as well as the installed versions of those packages. They can then use the file to download the packages to their local environments.

To download _requirements.text_ for a particular version of Python:

2. Click **Download as requirements.txt**.

The _requirements.txt_ file is downloaded to your machine.

**v39.1-39.2**

### v39.1

#### Viewing installed Python packages

The Python Packages page contains several lists of packages.

#### Summary of User Installed Packages

#### Installed Packages for Python 3.11

The packages in the Installed Packages for Python 3.11 are available to flows using Python 3.11. By default, it shows only those packages that were installed by users at your organization. To see a list of all Python 3.11 packages, select the **Show system-installed packages** option.

The table contains the following information for each package:

- The package's name. If information about the package is available on an external website, clicking the name redirects you to that website.

- Whether the package was pre-installed, or, if it was not, the date and time it was added

- The version of the package

- If the package was not pre-installed, links to download or delete the package

You can also sort the table by the names of the packages and the dates they were added.

#### Installed Packages for Python 3.9

The table’s layout and sorting options are the same as those described for the Installed Packages for Python 3.11 card.

#### Adding packages

#### Package requirements

The packages you install must be compatible with Python 3.9 or 3.11. If the package has any dependencies, you must also install those packages.

#### Enable package uploading in the application

Your application may already allow you to upload Python packages. To find out, go to **Flows** \> **Python Packages**.

To enable package uploading in the application:

1. Add the _HS\_ALLOW\_EXTERNAL\_PYTHON\_PACKAGES\_UPLOAD_ variable to your ".env" file and set it to _true_.

- If it does, you can follow the steps in [Upload custom Python packages](https://help.hyperscience.ai/deployment/docs/developing-flows#h_01HXA7TQEF749ENDW9WEB1AJAB) below to begin uploading packages.

- If it does not, double-check the content of your ".env" file to make sure you entered the new variable and its value correctly.

#### Upload custom Python packages

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in either of the Python 3.9 or Python 3.11 cards.

2. Do one of the following:

- Drag and drop the package's wheel ( _.whl_) file into the Add Python Packages dialog box.

#### Updating Python packages

You cannot update pre-installed packages.

If you would like to update a Python package that a user has installed in your application, you can do so by following the steps below:

1. Go to **Flows** \> **Python Packages**, and click **Add Package** in either of the Python 3.9 or Python 3.11 cards.

2. Do one of the following:

- Drag and drop the updated package's wheel ( _.whl_) file into the Add Python Packages dialog box.

The package's **Date Added** and **Version** values are updated in either the Python 3.9 table or the Python 3.11 table.

#### Downloading user-installed packages

#### Download all user-installed packages for a Python version

To download all the user-installed packages for a particular version of Python:

1. Go to **Flows** \> **Python Packages**, and click the menu (   ) in either of the Python 3.9 or Python 3.11 cards.

2. Click **Download user installed packages**.

#### Download an individual package

To download an individual package, go to **Flows** \> **Python Packages**, and click the **Download Package** button (  ) in the package's row in either the Python 3.9 table or the Python 3.11 table.

The downloaded file's name matches the name of the uploaded wheel file.

#### Deleting a custom package

You cannot delete pre-installed packages.

If you no longer need a custom package, you can delete it from the application.

Go to **Flows** \> **Python Packages**, and click the **Uninstall Package** button (  ) in the package's row in either the Python 3.9 table or the Python 3.11 table.

#### Downloading _requirements.txt_ for a Python version

To download _requirements.text_ for a particular version of Python:

1. Go to **Flows** \> **Python Packages**, and click the menu (  ) in either of the Python 3.9 or Python 3.11 cards.

2. Click **Download as requirements.txt**.

The _requirements.txt_ file is downloaded to your machine.

**v34-v39**

### v34-v39

If developers at your organization are creating custom blocks for your flows, they may want to install custom Python packages to add features to the blocks. System Admins can install and manage these packages on behalf of your developers.

#### Viewing installed Python packages

To find out which Python packages are currently installed in your application, go to **Flows** \> **Python Packages**.

The Python Packages table contains the following information for each package:

- The package's name. If information about the package is available on an external website, clicking the name redirects you to that website.

- Whether the package was pre-installed, or, if it was not, the date and time it was added

- The version of the package

- If the package was not pre-installed, links to download or delete the package

You can use the **Search** text box at the top of the page to search for a specific package by its name. You can also sort the table by the names of the packages and the dates they were added.

#### Adding packages

#### Package requirements

The packages you install must be compatible with Python 3.7. If the package has any dependencies, you must also install those packages.

#### Enable package uploading in the application

Your application may already allow you to upload Python packages. To find out, go to **Flows** \> **Python Packages**.

- If the message at the top of the page ends with "To add more packages, upload through the 'Add Packages' button," your application already has package uploading enabled. You do not need to make any changes to your application's ".env" file, and you can follow the steps in [Upload custom Python packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#upload-custom-python-packages) below.

To enable package uploading in the application:

1. Add the _HS\_ALLOW\_EXTERNAL\_PYTHON\_PACKAGES\_UPLOAD_ variable to your ".env" file and set it to _true_.

- To learn how to make changes to the ".env" file, see [Editing the “.env” file and running the application](https://help.hyperscience.ai/deployment/docs/editing-the-env-file-and-running-the-application).
2. After you've updated the ".env" file, go to **Flows** \> **Python Packages**, and make sure the message at the top of the page ends with "To add more packages, upload through the 'Add Packages' button."

- If it does not, double-check the content of your ".env" file to make sure you entered the new variable and its value correctly.

#### Upload custom Python packages

The steps in the upload process depend on which version of Hyperscience you are using.

**v35 and later**

1. Go to **Flows** \> **Python Packages**, and click **Add Packages**.

2. Do one of the following:

- Drag and drop the package's wheel ( _.whl_) file into the Add Python Packages dialog box.

- Click **Choose Files**, and find and open the package's wheel ( _.whl_) file on your machine.
3. If you would like to upload additional packages, click **Add More Files** to drag-and-drop or open more files. Otherwise, click **Upload**.

The package appears in the Python Packages table.

**v34**

Follow the steps outlined in our [Flows SDK documentation (opens in new tab)](https://flows-sdk.hyperscience.ai/pages/python_packages.html#installing-third-party-python-packages).

#### Updating Python packages (v35 and later)

You cannot update pre-installed packages.

If you would like to update a Python package that you’ve installed in your application, you can do so by following the steps below:

1. Go to **Flows** \> **Python Packages**, and click **Add Packages**.

2. Do one of the following:

- Drag and drop the updated package's wheel ( _.whl_) file into the Add Python Packages dialog box.

- Click **Choose Files**, and find and open the updated package's wheel ( _.whl_) file on your machine.
3. If you would like to update additional packages, click **Add More Files** to drag-and-drop or open more files. Otherwise, click **Upload**.

The package's **Date Added** and **Version** values are updated in the Python Packages table.

#### Downloading packages

You can download individual or all Python packages installed in your application.

#### Download all packages

Downloading all packages in your application can help your developers know exactly which packages are available to them as they develop flows for your organization.

To download all the packages installed in your application, go to **Flows** \> **Python Packages**, and click **Download All Packages**.

The downloaded file contains both pre-installed packages and any custom packages you've uploaded. The file's name is in the format _python\_packages\_MMDD-HHMMSS.zip_, where _MMDD_ is the month and date of the download and _HHMMSS_ is the hour, minutes, and seconds of the download's time in UTC time.

#### Download an individual package

You cannot download individual pre-installed packages. To download pre-installed packages, follow the steps in [Download all packages](https://help.hyperscience.ai/deployment/docs/v422-developing-flows#download-all-packages).

To download an individual package, go to **Flows** \> **Python Packages**, and click the **Download Package** button (  ) in the package's row in the table.

The downloaded file's name matches the name of the uploaded wheel file.

#### Deleting a custom package

You cannot delete pre-installed packages.

If you no longer need a custom package, you can delete it from the application.

#### v35 and later

Go to **Flows** \> **Python Packages**, and click the **Uninstall Package** button (  ) in the package's row in the table.

#### v34

Follow the steps outlined in our [Flows SDK documentation (opens in new tab)](https://flows-sdk.hyperscience.ai/pages/python_packages.html#uninstalling-third-party-python-packages).

Was this article helpful?

Yes  No
