Updated diagnostics
Added some extra info and automatic selection/timeout of requirements files.
This commit is contained in:
1 parent
e86109aa14
commit
6a840a591c
1 file changed
+59
-15
+59
-15
@@ -1,7 +1,6 @@
|
|||||||
import platform
|
import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
import logging
|
import logging
|
||||||
from importlib_metadata import distributions
|
|
||||||
import torch
|
import torch
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
@@ -9,12 +8,10 @@ import sys
|
|||||||
import glob
|
import glob
|
||||||
import site
|
import site
|
||||||
import textwrap
|
import textwrap
|
||||||
import packaging.version
|
import threading
|
||||||
import packaging.specifiers
|
|
||||||
from packaging.specifiers import SpecifierSet
|
|
||||||
from packaging.version import parse as parse_version
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Check and install psutil if necessary
|
||||||
try:
|
try:
|
||||||
import psutil
|
import psutil
|
||||||
except ImportError:
|
except ImportError:
|
||||||
@@ -22,22 +19,68 @@ except ImportError:
|
|||||||
subprocess.run(['pip', 'install', 'psutil'])
|
subprocess.run(['pip', 'install', 'psutil'])
|
||||||
import psutil
|
import psutil
|
||||||
|
|
||||||
|
# Check and install importlib_metadata if necessary
|
||||||
|
try:
|
||||||
|
from importlib_metadata import distributions
|
||||||
|
except ImportError:
|
||||||
|
print("importlib_metadata not found. Installing...")
|
||||||
|
subprocess.run(['pip', 'install', 'importlib_metadata'])
|
||||||
|
from importlib_metadata import distributions
|
||||||
|
|
||||||
|
# Check and install packaging if necessary
|
||||||
|
try:
|
||||||
|
from packaging.specifiers import SpecifierSet
|
||||||
|
from packaging.version import parse as parse_version
|
||||||
|
except ImportError:
|
||||||
|
print("packaging not found. Installing...")
|
||||||
|
subprocess.run(['pip', 'install', 'packaging'])
|
||||||
|
from packaging.specifiers import SpecifierSet
|
||||||
|
from packaging.version import parse as parse_version
|
||||||
|
|
||||||
|
def input_with_timeout(prompt, timeout):
|
||||||
|
def input_thread(result):
|
||||||
|
try:
|
||||||
|
result.append(input(prompt))
|
||||||
|
except EOFError: # Handles the situation where input is interrupted
|
||||||
|
result.append(None)
|
||||||
|
|
||||||
|
result = []
|
||||||
|
thread = threading.Thread(target=input_thread, args=(result,))
|
||||||
|
thread.daemon = True
|
||||||
|
thread.start()
|
||||||
|
thread.join(timeout)
|
||||||
|
|
||||||
|
if thread.is_alive():
|
||||||
|
print("\n\n No input received. Using default 'requirements_standalone.txt'.")
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return result[0]
|
||||||
|
|
||||||
def get_requirements_file():
|
def get_requirements_file():
|
||||||
this_dir = Path(__file__).parent
|
this_dir = Path(__file__).parent
|
||||||
requirements_dir = this_dir / 'system' / 'requirements'
|
requirements_dir = this_dir / 'system' / 'requirements'
|
||||||
requirements_files = list(requirements_dir.glob('requirements*.txt'))
|
requirements_files = list(requirements_dir.glob('requirements*.txt'))
|
||||||
|
|
||||||
if not requirements_files:
|
if not requirements_files:
|
||||||
print("\033[91mNo requirements files found.\033[0m")
|
print("\033[91mNo requirements files found.\033[0m")
|
||||||
return None
|
return None
|
||||||
|
print(f"\033[94m _ _ _ \033[1;35m_____ _ _ \033[0m _____ _____ ____ ")
|
||||||
|
print(f"\033[94m / \ | | |\033[1;35m_ _|_ _| | | __ \033[0m |_ _|_ _/ ___| ")
|
||||||
|
print(f"\033[94m / _ \ | | |\033[1;35m | |/ _` | | |/ / \033[0m | | | | \___ \ ")
|
||||||
|
print(f"\033[94m / ___ \| | |\033[1;35m | | (_| | | < \033[0m | | | | ___) |")
|
||||||
|
print(f"\033[94m /_/ \_\_|_|\033[1;35m |_|\__,_|_|_|\_\ \033[0m |_| |_| |____/ ")
|
||||||
|
print(f"")
|
||||||
|
|
||||||
print("\033[94m\n Select a requirements file to check against.")
|
print("\033[94m\n Select a requirements file to check against.")
|
||||||
print("\033[94m Or press Enter for default 'requirements_standalone.txt'):\033[0m\n")
|
print("\033[94m Or press Enter for default 'requirements_standalone.txt'):\033[0m\n")
|
||||||
for i, file_path in enumerate(requirements_files, start=1):
|
for i, file_path in enumerate(requirements_files, start=1):
|
||||||
print(f" {i}. {file_path.name}")
|
print(f" {i}. {file_path.name}")
|
||||||
|
print("\033[94m\n After 20 seconds, requirements_standalone.txt will be auto selected.\033[0m\n")
|
||||||
choice = input("\n Enter the number of your choice: ")
|
choice = input_with_timeout("\n Enter the number of your choice: ", 20)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if choice is None:
|
||||||
|
raise ValueError("No input; using default.")
|
||||||
choice = int(choice) - 1
|
choice = int(choice) - 1
|
||||||
return str(requirements_files[choice])
|
return str(requirements_files[choice])
|
||||||
except (ValueError, IndexError):
|
except (ValueError, IndexError):
|
||||||
@@ -190,17 +233,17 @@ def log_system_info():
|
|||||||
logging.info(f" System RAM: {system_ram}")
|
logging.info(f" System RAM: {system_ram}")
|
||||||
logging.info(f"\nGPU INFORMATION:")
|
logging.info(f"\nGPU INFORMATION:")
|
||||||
logging.info(f" {gpu_info}")
|
logging.info(f" {gpu_info}")
|
||||||
|
logging.info(f"CUDA:")
|
||||||
|
logging.info(f" CUDA Working: {cuda_test_result}")
|
||||||
|
logging.info(f" CUDA_HOME : {cuda_home}")
|
||||||
logging.info(f" CUDA Device : {cuda_device_name}")
|
logging.info(f" CUDA Device : {cuda_device_name}")
|
||||||
logging.info(f" CUDA Memory : {cuda_device_memory:.2f} GB")
|
logging.info(f" CUDA Memory : {cuda_device_memory:.2f} GB")
|
||||||
logging.info(f" CUDA Version: {cuda_version}")
|
logging.info(f" CUDA Version: {cuda_version}")
|
||||||
logging.info("DISK INFORMATION:")
|
logging.info("\nDISK INFORMATION:")
|
||||||
for disk in disk_info:
|
for disk in disk_info:
|
||||||
logging.info(disk)
|
logging.info(disk)
|
||||||
logging.info("\nNETWORK PORT:")
|
logging.info("\nNETWORK PORT:")
|
||||||
logging.info(f" Port Status : {port_status}")
|
logging.info(f" Port Status : {port_status}")
|
||||||
logging.info("\nCUDA :")
|
|
||||||
logging.info(f" CUDA Working: {cuda_test_result}")
|
|
||||||
logging.info(f" CUDA_HOME : {cuda_home}")
|
|
||||||
if found_paths:
|
if found_paths:
|
||||||
logging.info(f" Cublas64_11 Path: {', '.join(found_paths)}")
|
logging.info(f" Cublas64_11 Path: {', '.join(found_paths)}")
|
||||||
else:
|
else:
|
||||||
@@ -333,3 +376,4 @@ def log_system_info():
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
log_system_info()
|
log_system_info()
|
||||||
|
sys.exit(1)
|
||||||
Reference in new issue
Block a user