--- title: "Set up Development Environment" --- You'll need to set up a development environment if you want to develop a new feature or component for Home Assistant. Read on to learn how to set up. ## Preparing your environment ### Developing on Linux Install the core dependencies. ```bash $ sudo apt-get install python3-pip python3-dev python3-venv ``` In order to run `script/setup` below you will need some more dependencies. ```bash $ sudo apt-get install autoconf libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev zlib1g-dev ``` > Different distributions have different package installation mechanisms and sometimes packages names as well. For example Centos would use: `sudo yum install epel-release && sudo yum install python36 python36-devel mysql-devel gcc` Additional dependencies exist if you plan to perform Frontend Development, please read the [Frontend](frontend_index.md) section to learn more. ### Developing on Windows Due to Home Assistant is mainly designed and developed on Linux distributions, on Windows 10 you can setup a [Linux subsystem](https://docs.microsoft.com/windows/wsl/install-win10). Open Powershell as an Administrator and run ``` Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux ``` From Windows Store install Ubuntu. When the Linux subsystem is setup, perform install as for Linux ```bash $ sudo apt-get update $ sudo apt-get install python3-pip python3-dev python3-venv $ sudo apt-get install autoconf libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev zlib1g-dev ``` Hint: Git is included in Linux subsytem. When invoking your installation (see below), make sure to specify a folder for configuration which is accessible from Windows. ```bash mkdir -p ../config hass -c ../config ``` ### Developing on OS X Install [Homebrew](https://brew.sh/), then use that to install Python 3: ```bash $ brew install python3 autoconf ``` ## Setup Local Repository Visit the [Home Assistant repository](https://github.com/home-assistant/home-assistant) and click **Fork**. Once forked, setup your local copy of the source using the commands: ```bash $ git clone https://github.com/YOUR_GIT_USERNAME/home-assistant.git $ cd home-assistant $ git remote add upstream https://github.com/home-assistant/home-assistant.git ``` ## Setting up virtual environment To isolate your environment from the rest of the system, set up a [`venv`](https://docs.python.org/3/library/venv.html). Within the `home-assistant` directory, create and activate your virtual environment. ```bash $ python3 -m venv . $ source bin/activate ``` Install the requirements with a provided script named `setup`. ```bash $ script/setup ``` Invoke your installation, adjusting the [configuration](https://www.home-assistant.io/docs/configuration/) if required. ```bash $ hass ``` ## Logging By default logging in home-assistant is tuned for operating in production (set to INFO by default, with some modules set to even less verbose logging levels). You can use the [logger](https://www.home-assistant.io/components/logger/) component to adjust logging to DEBUG to see even more details about what is going on: ```yaml logger: default: info logs: homeassistant.core: debug nest.nest: debug asyncio: debug homeassistant.components.cloud.iot: debug ```