import os import glob def generate_requirements(): """ Generate a comprehensive requirements.txt file by combining: 1. The main requirements.txt from the root directory 2. All requirements.txt files found in custom_nodes subfolders 3. Adding the 'black' package Returns: str: The combined requirements as a string """ requirements = set() # Get the ComfyUI root directory (2 levels up from this file) current_dir = os.path.dirname(os.path.abspath(__file__)) comfy_root = os.path.dirname(os.path.dirname(current_dir)) # 1. Read the main requirements.txt if it exists main_req_path = os.path.join(comfy_root, "requirements.txt") if os.path.exists(main_req_path): with open(main_req_path, 'r') as f: for line in f: line = line.strip() if line and not line.startswith('#'): requirements.add(line) # 2. Scan custom_nodes directory for requirements.txt files custom_nodes_dir = os.path.join(comfy_root, "custom_nodes") if os.path.exists(custom_nodes_dir): # Find all requirements.txt files in custom_nodes subdirectories req_files = glob.glob(os.path.join(custom_nodes_dir, "**/requirements.txt"), recursive=True) for req_file in req_files: with open(req_file, 'r') as f: for line in f: line = line.strip() if line and not line.startswith('#'): requirements.add(line) # 3. Add the black package requirements.add('black') # Convert set to sorted list for consistent output sorted_requirements = sorted(list(requirements)) # Join requirements with newlines return '\n'.join(sorted_requirements) if __name__ == "__main__": # When run directly, print the requirements print(generate_requirements())