Files
siliconflow-BizyAir/prestartup_script.py
Yao Chi 0da26e2959 check and update requirements automatically (#145)
* check and update requirements automatically

* remove depency numpy
2024-09-20 09:43:28 +08:00

46 lines
1.5 KiB
Python

import os
import subprocess
import sys
from importlib.metadata import distributions
from packaging.requirements import Requirement
from packaging.version import Version
def install_dependencies():
current_path = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(current_path, "requirements.txt")) as f:
required_packages = [
line.strip()
for line in f.readlines()
if line.strip() and not line.strip().startswith("#")
]
installed_packages = {
dist.metadata["Name"]: Version(dist.version) for dist in distributions()
}
for package in required_packages:
try:
requirement = Requirement(package)
installed_version = installed_packages.get(requirement.name)
if not installed_version or not requirement.specifier.contains(
installed_version
):
try:
print(f"\033[92m[BizyAir]\033[0m Try to install depency {package}")
subprocess.check_call(
[sys.executable, "-m", "pip", "install", package]
)
except subprocess.CalledProcessError as e:
print(f"\033[91m[BizyAir]\033[0m Failed to install {package}: {e}")
continue
except Exception as e:
print(
f"\033[91m[BizyAir]\033[0m Failed to parse requirement {package}: {e}"
)
continue
install_dependencies()