Don't activate venv in devcontainer

This commit is contained in:
kroimon 2025-01-22 15:16:26 +00:00
parent c2e52f4b11
commit ae1e9eaf1c
2 changed files with 23 additions and 15 deletions

View File

@ -45,6 +45,6 @@ repos:
hooks:
- id: pylint
name: pylint
entry: python script/run-in-env pylint
entry: python3 script/run-in-env.py pylint
language: system
types: [python]

View File

@ -7,6 +7,13 @@ import sys
def find_and_activate_virtualenv():
if (
("VIRTUAL_ENV" in os.environ)
or os.environ.get("DEVCONTAINER", False)
or os.environ.get("ESPHOME_NO_VENV", False)
):
return
try:
# Get the top-level directory of the git repository
my_path = subprocess.check_output(
@ -17,7 +24,7 @@ def find_and_activate_virtualenv():
"Error: Not a git repository or unable to determine the top-level directory.",
file=sys.stderr,
)
sys.exit(1)
return
# Check for virtual environments
for venv in ["venv", ".venv", "."]:
@ -29,25 +36,26 @@ def find_and_activate_virtualenv():
)
if activate_path.exists():
# Activate the virtual environment by updating PATH
env = os.environ.copy()
venv_bin_dir = activate_path.parent
env["PATH"] = f"{venv_bin_dir}{os.pathsep}{env['PATH']}"
env["VIRTUAL_ENV"] = str(venv_bin_dir.parent)
os.environ["PATH"] = f"{venv_bin_dir}{os.pathsep}{os.environ['PATH']}"
os.environ["VIRTUAL_ENV"] = str(venv_bin_dir.parent)
print(f"Activated virtual environment: {venv_bin_dir.parent}")
# Execute the remaining arguments in the new environment
if len(sys.argv) > 1:
subprocess.run(sys.argv[1:], env=env, check=False)
else:
print(
"No command provided to run in the virtual environment.",
file=sys.stderr,
)
return
print("No virtual environment found.", file=sys.stderr)
sys.exit(1)
def run_command():
# Execute the remaining arguments in the new environment
if len(sys.argv) > 1:
subprocess.run(sys.argv[1:], check=False)
else:
print(
"No command provided to run in the virtual environment.",
file=sys.stderr,
)
if __name__ == "__main__":
find_and_activate_virtualenv()
run_command()