Files
antigravity-skills-reference/skills/notebooklm/scripts/__init__.py

81 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env python3
"""
NotebookLM Skill Scripts Package
Provides automatic environment management for all scripts
"""
import os
import sys
import subprocess
from pathlib import Path
def ensure_venv_and_run():
"""
Ensure virtual environment exists and run the requested script.
This is called when any script is imported or run directly.
"""
# Only do this if we're not already in the skill's venv
skill_dir = Path(__file__).parent.parent
venv_dir = skill_dir / ".venv"
# Check if we're in a venv
in_venv = hasattr(sys, 'real_prefix') or (
hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix
)
# Check if it's OUR venv
if in_venv:
venv_path = Path(sys.prefix)
if venv_path == venv_dir:
# We're already in the correct venv
return
# We need to set up or switch to our venv
if not venv_dir.exists():
print("🔧 First-time setup detected...")
print(" Creating isolated environment for NotebookLM skill...")
print(" This ensures clean dependency management...")
# Create venv
import venv
venv.create(venv_dir, with_pip=True)
# Install requirements
requirements_file = skill_dir / "requirements.txt"
if requirements_file.exists():
if os.name == 'nt': # Windows
pip_exe = venv_dir / "Scripts" / "pip.exe"
else:
pip_exe = venv_dir / "bin" / "pip"
print(" Installing dependencies in isolated environment...")
subprocess.run(
[str(pip_exe), "install", "-q", "-r", str(requirements_file)],
check=True
)
# Also install patchright's chromium
print(" Setting up browser automation...")
if os.name == 'nt':
python_exe = venv_dir / "Scripts" / "python.exe"
else:
python_exe = venv_dir / "bin" / "python"
subprocess.run(
[str(python_exe), "-m", "patchright", "install", "chromium"],
check=True,
capture_output=True
)
print("✅ Environment ready! All dependencies isolated in .venv/")
# If we're here and not in the venv, we should recommend using the venv
if not in_venv:
print("\n⚠️ Running outside virtual environment")
print(" Recommended: Use scripts/run.py to ensure clean execution")
print(" Or activate: source .venv/bin/activate")
# Check environment when module is imported
ensure_venv_and_run()