|
|
|
|
|
"""
|
|
|
Dependency checker script for Facebook Ad Analytics.
|
|
|
This script checks if all required dependencies are installed.
|
|
|
"""
|
|
|
|
|
|
import importlib
|
|
|
import sys
|
|
|
|
|
|
REQUIRED_PACKAGES = [
|
|
|
"flask",
|
|
|
"flask_sqlalchemy",
|
|
|
"flask_login",
|
|
|
"flask_wtf",
|
|
|
"flask_migrate",
|
|
|
"werkzeug",
|
|
|
"celery",
|
|
|
"redis",
|
|
|
"selenium",
|
|
|
"transformers",
|
|
|
"numpy",
|
|
|
"cv2",
|
|
|
"pytesseract",
|
|
|
"gunicorn",
|
|
|
"pytest",
|
|
|
"prophet",
|
|
|
"webdriver_manager",
|
|
|
"psycopg2",
|
|
|
"click",
|
|
|
"dotenv",
|
|
|
"ratelimit",
|
|
|
]
|
|
|
|
|
|
OPTIONAL_PACKAGES = [
|
|
|
"torch",
|
|
|
"tensorflow",
|
|
|
"flax",
|
|
|
]
|
|
|
|
|
|
def check_package(package_name):
|
|
|
"""Check if a package is installed."""
|
|
|
try:
|
|
|
importlib.import_module(package_name)
|
|
|
return True
|
|
|
except ImportError:
|
|
|
return False
|
|
|
|
|
|
def main():
|
|
|
"""Main function."""
|
|
|
print("Checking required dependencies...")
|
|
|
missing_packages = []
|
|
|
|
|
|
for package in REQUIRED_PACKAGES:
|
|
|
if not check_package(package):
|
|
|
missing_packages.append(package)
|
|
|
print(f"❌ {package} is not installed")
|
|
|
else:
|
|
|
print(f"✅ {package} is installed")
|
|
|
|
|
|
print("\nChecking optional dependencies...")
|
|
|
missing_optional = []
|
|
|
|
|
|
for package in OPTIONAL_PACKAGES:
|
|
|
if not check_package(package):
|
|
|
missing_optional.append(package)
|
|
|
print(f"⚠️ {package} is not installed (optional)")
|
|
|
else:
|
|
|
print(f"✅ {package} is installed")
|
|
|
|
|
|
if missing_packages:
|
|
|
print(f"\n❌ {len(missing_packages)} required packages are missing:")
|
|
|
print(" " + ", ".join(missing_packages))
|
|
|
print("\nPlease install them using:")
|
|
|
print(f"pip install {' '.join(missing_packages)}")
|
|
|
return 1
|
|
|
else:
|
|
|
print("\n✅ All required packages are installed!")
|
|
|
|
|
|
if missing_optional:
|
|
|
print(f"\n⚠️ {len(missing_optional)} optional packages are missing:")
|
|
|
print(" " + ", ".join(missing_optional))
|
|
|
print("\nYou may want to install them for full functionality:")
|
|
|
print(f"pip install {' '.join(missing_optional)}")
|
|
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
sys.exit(main()) |