from dotenv import load_dotenv import os from huggingface_hub import login, HfApi import sys def setup_huggingface(): """Configure l'authentification Hugging Face.""" try: print("=== Début de la configuration Hugging Face ===") print(f"Python version: {sys.version}") print(f"Working directory: {os.getcwd()}") # Charger les variables d'environnement depuis .env load_dotenv(verbose=True, override=True) print("Variables d'environnement chargées depuis .env") # Récupérer le token depuis les variables d'environnement print("\nRecherche du token...") # Liste des noms possibles pour le token token_names = ["HF_TOKEN", "HUGGINGFACE_API_TOKEN", "HUGGINGFACE_TOKEN"] # Afficher toutes les variables d'environnement liées à Hugging Face env_vars = {k: v if k != "HF_TOKEN" else f"{v[:4]}...{v[-4:]}" for k, v in os.environ.items() if k.startswith("HF") or "HUGGING" in k} print("\nVariables d'environnement disponibles :") for k, v in env_vars.items(): print(f"- {k}: {v}") # Essayer de récupérer le token hf_token = None for name in token_names: value = os.environ.get(name) if value: print(f"\nToken trouvé dans {name}") if len(value.strip()) > 0: hf_token = value.strip() break else: print(f"Token trouvé dans {name} mais vide") else: print(f"Token non trouvé dans {name}") if not hf_token: print("\nErreur : Token Hugging Face non trouvé ou vide dans les variables d'environnement") return False print(f"\nToken trouvé (longueur: {len(hf_token)})") print(f"Début du token : {hf_token[:4]}...") print(f"Fin du token : ...{hf_token[-4:]}") # Configurer le token comme HF_TOKEN os.environ["HF_TOKEN"] = hf_token print("Token configuré comme HF_TOKEN") # Se connecter à Hugging Face print("\nTentative de connexion à Hugging Face...") try: login(token=hf_token, add_to_git_credential=True) print("Login réussi") except Exception as e: print(f"Erreur lors du login : {str(e)}") raise # Vérifier la connexion print("\nVérification de la connexion...") try: api = HfApi() user_info = api.whoami() print(f"Connecté avec succès en tant que : {user_info['name']}") print(f"Type de compte : {user_info.get('account_type', 'inconnu')}") print(f"Organisations : {', '.join(user_info.get('orgs', []))}") except Exception as e: print(f"Erreur lors de la vérification de la connexion : {str(e)}") raise print("\n=== Configuration Hugging Face terminée avec succès ===") return True except Exception as e: print(f"\nErreur lors de la configuration Hugging Face : {str(e)}") import traceback print("\nTrace complète :") print(traceback.format_exc()) return False if __name__ == "__main__": setup_huggingface()