updated to browser view
This commit is contained in:
58
dependency_utils.py
Normal file
58
dependency_utils.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import importlib.util
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
|
||||
def install_package_from_wheel(wheel_path, package_name):
|
||||
"""
|
||||
Install a Python package from a wheel file
|
||||
"""
|
||||
try:
|
||||
print(f"Installing {package_name} from {wheel_path}...")
|
||||
result = subprocess.run([
|
||||
sys.executable, "-m", "pip", "install", wheel_path,
|
||||
"--no-index", "--no-deps", "--break-system-packages",
|
||||
"--no-warn-script-location", "--force-reinstall"
|
||||
], capture_output=True, text=True, timeout=60)
|
||||
if result.returncode == 0:
|
||||
print(f"✓ {package_name} installed successfully")
|
||||
return True
|
||||
else:
|
||||
print(f"✗ Failed to install {package_name}: {result.stderr}")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"✗ Error installing {package_name}: {e}")
|
||||
return False
|
||||
|
||||
def check_and_install_dependencies(required_packages, repository_path):
|
||||
"""
|
||||
Check if required packages are installed and install them from local repository if needed
|
||||
"""
|
||||
print("Checking and installing dependencies...")
|
||||
missing_packages = []
|
||||
for package_name, wheel_file in required_packages.items():
|
||||
try:
|
||||
spec = importlib.util.find_spec(package_name)
|
||||
if spec is not None:
|
||||
continue # Already installed
|
||||
else:
|
||||
print(f"✗ {package_name} is not installed")
|
||||
missing_packages.append((package_name, wheel_file))
|
||||
except ImportError:
|
||||
print(f"✗ {package_name} is not installed")
|
||||
missing_packages.append((package_name, wheel_file))
|
||||
except Exception as e:
|
||||
print(f"✗ Error checking {package_name}: {e}")
|
||||
missing_packages.append((package_name, wheel_file))
|
||||
if missing_packages:
|
||||
print(f"\nInstalling {len(missing_packages)} missing packages...")
|
||||
for package_name, wheel_file in missing_packages:
|
||||
if wheel_file is None:
|
||||
print(f"No wheel file for {package_name}, please install manually if needed.")
|
||||
continue
|
||||
wheel_path = os.path.join(repository_path, wheel_file)
|
||||
if not os.path.exists(wheel_path):
|
||||
print(f"✗ Wheel file not found: {wheel_path}")
|
||||
continue
|
||||
install_package_from_wheel(wheel_path, package_name)
|
||||
print("Dependency check completed.\n")
|
||||
Reference in New Issue
Block a user