|
|
def ensure_dependencies(): |
|
|
"""Check for required packages and install them if not found.""" |
|
|
import importlib |
|
|
import subprocess |
|
|
import sys |
|
|
|
|
|
# Define required packages |
|
|
required_packages = { |
|
|
'requests': 'requests', |
|
|
'beautifulsoup4': 'bs4', |
|
|
'selenium': 'selenium', |
|
|
'openai': 'openai', |
|
|
'webdriver-manager': 'webdriver_manager', |
|
|
# Add any other required packages here |
|
|
} |
|
|
|
|
|
missing_packages = [] |
|
|
|
|
|
# Check which packages are missing |
|
|
for package_name, import_name in required_packages.items(): |
|
|
try: |
|
|
importlib.import_module(import_name) |
|
|
print(f"✓ {package_name} is already installed") |
|
|
except ImportError: |
|
|
missing_packages.append(package_name) |
|
|
print(f"✗ {package_name} needs to be installed") |
|
|
|
|
|
# Install missing packages |
|
|
if missing_packages: |
|
|
print("\nInstalling missing packages...") |
|
|
for package in missing_packages: |
|
|
print(f"Installing {package}...") |
|
|
try: |
|
|
subprocess.check_call([sys.executable, "-m", "pip", "install", package]) |
|
|
print(f"Successfully installed {package}") |
|
|
except subprocess.CalledProcessError: |
|
|
print(f"Failed to install {package}") |
|
|
|
|
|
# Verify all packages are now installed |
|
|
all_installed = True |
|
|
for package_name, import_name in required_packages.items(): |
|
|
try: |
|
|
importlib.import_module(import_name) |
|
|
except ImportError: |
|
|
all_installed = False |
|
|
print(f"⚠️ {package_name} installation failed") |
|
|
|
|
|
return all_installed |