From 38af04c6ce137e544342002931153d1ada5abbb8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 5 Mar 2018 15:51:37 -0800 Subject: [PATCH] Reinstate our old virtual env check in favor of pip (#12932) --- homeassistant/requirements.py | 2 +- homeassistant/util/package.py | 10 ++++++++-- tests/test_requirements.py | 4 ++-- tests/util/test_package.py | 4 ++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/homeassistant/requirements.py b/homeassistant/requirements.py index df5a098f901..753947a2c12 100644 --- a/homeassistant/requirements.py +++ b/homeassistant/requirements.py @@ -39,6 +39,6 @@ def pip_kwargs(config_dir): kwargs = { 'constraints': os.path.join(os.path.dirname(__file__), CONSTRAINT_FILE) } - if not pkg_util.running_under_virtualenv(): + if not pkg_util.is_virtual_env(): kwargs['target'] = os.path.join(config_dir, 'deps') return kwargs diff --git a/homeassistant/util/package.py b/homeassistant/util/package.py index 75e12f41a90..a2f707c54f5 100644 --- a/homeassistant/util/package.py +++ b/homeassistant/util/package.py @@ -7,7 +7,6 @@ import sys import threading from urllib.parse import urlparse -from pip.locations import running_under_virtualenv from typing import Optional import pkg_resources @@ -17,6 +16,13 @@ _LOGGER = logging.getLogger(__name__) INSTALL_LOCK = threading.Lock() +def is_virtual_env(): + """Return if we run in a virtual environtment.""" + # Check supports venv && virtualenv + return (getattr(sys, 'base_prefix', sys.prefix) != sys.prefix or + hasattr(sys, 'real_prefix')) + + def install_package(package: str, upgrade: bool = True, target: Optional[str] = None, constraints: Optional[str] = None) -> bool: @@ -37,7 +43,7 @@ def install_package(package: str, upgrade: bool = True, if constraints is not None: args += ['--constraint', constraints] if target: - assert not running_under_virtualenv() + assert not is_virtual_env() # This only works if not running in venv args += ['--user'] env['PYTHONUSERBASE'] = os.path.abspath(target) diff --git a/tests/test_requirements.py b/tests/test_requirements.py index 946e64af847..5f09e0bd83e 100644 --- a/tests/test_requirements.py +++ b/tests/test_requirements.py @@ -24,7 +24,7 @@ class TestRequirements: self.hass.stop() @mock.patch('os.path.dirname') - @mock.patch('homeassistant.util.package.running_under_virtualenv', + @mock.patch('homeassistant.util.package.is_virtual_env', return_value=True) @mock.patch('homeassistant.util.package.install_package', return_value=True) @@ -43,7 +43,7 @@ class TestRequirements: constraints=os.path.join('ha_package_path', CONSTRAINT_FILE)) @mock.patch('os.path.dirname') - @mock.patch('homeassistant.util.package.running_under_virtualenv', + @mock.patch('homeassistant.util.package.is_virtual_env', return_value=False) @mock.patch('homeassistant.util.package.install_package', return_value=True) diff --git a/tests/util/test_package.py b/tests/util/test_package.py index ade374dad33..33db052f45a 100644 --- a/tests/util/test_package.py +++ b/tests/util/test_package.py @@ -68,8 +68,8 @@ def mock_env_copy(): @pytest.fixture def mock_venv(): - """Mock homeassistant.util.package.running_under_virtualenv.""" - with patch('homeassistant.util.package.running_under_virtualenv') as mock: + """Mock homeassistant.util.package.is_virtual_env.""" + with patch('homeassistant.util.package.is_virtual_env') as mock: mock.return_value = True yield mock