mirror of
https://github.com/lllyasviel/Fooocus.git
synced 2026-08-16 13:13:16 +02:00
Upgrade requirements_met function (#1955)
* Upgrade requirements_met function * Removed extra import * Using Requirements instead of Regex
This commit is contained in:
+17
-21
@@ -5,6 +5,11 @@ import subprocess
|
|||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import logging
|
import logging
|
||||||
|
import importlib.metadata
|
||||||
|
import packaging.version
|
||||||
|
from packaging.requirements import Requirement
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
logging.getLogger("torch.distributed.nn").setLevel(logging.ERROR) # sshh...
|
logging.getLogger("torch.distributed.nn").setLevel(logging.ERROR) # sshh...
|
||||||
@@ -73,35 +78,26 @@ def run_pip(command, desc=None, live=default_command_live):
|
|||||||
|
|
||||||
|
|
||||||
def requirements_met(requirements_file):
|
def requirements_met(requirements_file):
|
||||||
"""
|
|
||||||
Does a simple parse of a requirements.txt file to determine if all rerqirements in it
|
|
||||||
are already installed. Returns True if so, False if not installed or parsing fails.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import importlib.metadata
|
|
||||||
import packaging.version
|
|
||||||
|
|
||||||
with open(requirements_file, "r", encoding="utf8") as file:
|
with open(requirements_file, "r", encoding="utf8") as file:
|
||||||
for line in file:
|
for line in file:
|
||||||
if line.strip() == "":
|
line = line.strip()
|
||||||
|
if line == "" or line.startswith('#'):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
m = re.match(re_requirement, line)
|
requirement = Requirement(line)
|
||||||
if m is None:
|
package = requirement.name
|
||||||
return False
|
|
||||||
|
|
||||||
package = m.group(1).strip()
|
|
||||||
version_required = (m.group(2) or "").strip()
|
|
||||||
|
|
||||||
if version_required == "":
|
|
||||||
continue
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
version_installed = importlib.metadata.version(package)
|
version_installed = importlib.metadata.version(package)
|
||||||
except Exception:
|
installed_version = packaging.version.parse(version_installed)
|
||||||
return False
|
|
||||||
|
|
||||||
if packaging.version.parse(version_required) != packaging.version.parse(version_installed):
|
# Check if the installed version satisfies the requirement
|
||||||
|
if installed_version not in requirement.specifier:
|
||||||
|
print(f"Version mismatch for {package}: Installed version {version_installed} does not meet requirement {requirement}")
|
||||||
|
return False
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error checking version for {package}: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user