diff --git a/homeassistant/scripts/__init__.py b/homeassistant/scripts/__init__.py index 02cc0bff362241..3050379a496c7c 100644 --- a/homeassistant/scripts/__init__.py +++ b/homeassistant/scripts/__init__.py @@ -9,7 +9,8 @@ from homeassistant.bootstrap import async_mount_local_lib_path from homeassistant.config import get_default_config_dir -from homeassistant import requirements +from homeassistant.core import HomeAssistant +from homeassistant.requirements import pip_kwargs, PackageLoadable from homeassistant.util.package import install_package, is_virtual_env @@ -39,16 +40,25 @@ def run(args: List) -> int: config_dir = extract_config_dir() + loop = asyncio.get_event_loop() + if not is_virtual_env(): - asyncio.get_event_loop().run_until_complete( - async_mount_local_lib_path(config_dir)) + loop.run_until_complete(async_mount_local_lib_path(config_dir)) - pip_kwargs = requirements.pip_kwargs(config_dir) + _pip_kwargs = pip_kwargs(config_dir) logging.basicConfig(stream=sys.stdout, level=logging.INFO) + hass = HomeAssistant(loop) + pkgload = PackageLoadable(hass) for req in getattr(script, 'REQUIREMENTS', []): - returncode = install_package(req, **pip_kwargs) + try: + loop.run_until_complete(pkgload.loadable(req)) + continue + except ImportError: + pass + + returncode = install_package(req, **_pip_kwargs) if not returncode: print('Aborting script, could not install dependency', req) diff --git a/homeassistant/scripts/check_config.py b/homeassistant/scripts/check_config.py index 67bc97da9924dd..1b8c67193950fc 100644 --- a/homeassistant/scripts/check_config.py +++ b/homeassistant/scripts/check_config.py @@ -5,7 +5,6 @@ import os from collections import OrderedDict, namedtuple from glob import glob -from platform import system from typing import Dict, List, Sequence from unittest.mock import patch @@ -22,8 +21,6 @@ from homeassistant.exceptions import HomeAssistantError REQUIREMENTS = ('colorlog==4.0.2',) -if system() == 'Windows': # Ensure colorama installed for colorlog on Windows - REQUIREMENTS += ('colorama<=1',) _LOGGER = logging.getLogger(__name__) # pylint: disable=protected-access