Skip to content

Installing the Prerequisites

The prerequisites for the PowerController application are:

  1. Python v3.13
  2. UV package manager

We'll step you through each of these in turn:

STEP 1: Checking and installing Python v3.13

Check to see which version of Python is installed:

python3 --version

If Python 3.13 is installed, you should see something like:

Python 3.13.x

If the command is not found, or the version is lower than 3.13, install python3 using one of the sections below

Installing Python v3.13 on Linux

We'll use apt to install Python 3.13 on Linux

sudo apt update
sudo apt install python3.13 python3.13-venv python3.13-dev

Installing Python v3.13 on macOS

We'll use Homebrew to install Python 3.13 on a Mac

Check if Homebrew is installed

brew --version

If Homebrew is not installed, install it with:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

After installation, restart your terminal.

Install Python 3.13

brew update
brew install python@3.13

Ensure Python 3.13 is being used

brew link python@3.13 --force

Verify that v3.13 is not the default:

python3 --version

Installing Python v3.13 on a RaspberryPi

As at the time of writing, Python 3.13 compiled binaries aren't yet available for the Pi, so you will need to compile them from the source code using this guide.


STEP 2: Install git

git is needed to download the PowerController app from GitHub. Check if git is installed

git --version

If it's not installed, follow the steps below.

Installing git on Linux and RaspberryPi

sudo apt update
sudo apt install git

Installing git on macOS

brew install git

STEP 3: Install the UV package manager

uv is extremely fast and replaces tools like pip, venv, and pip-tools.

Installing UV on Linux and RaspberryPi

curl -LsSf https://astral.sh/uv/install.sh | sh

Restart your terminal session, then verify:

uv --version

Installing UV on macOS

brew install uv

# Verify installation:
uv --version

Ensuring uv is on Your PATH

If uv installs but the command is not found, add this to your shell profile (~/.bashrc, ~/.zshrc, etc.):

export PATH="$HOME/.local/bin:$PATH"

Then reload:

# Reload ZShell
source ~/.zshrc

# Reload bash
source ~/.bashrc

Next Step >> Setup your Shelly devices