2010-11-24 5 views
1

Je suis en train de compiler un programme en utilisant distutils mais je veux m'assurer que l'utilisateur a installé Tkinter avant d'installer mon paquet.Comment puis-je exiger Tkinter avec distutils?

Mes recherches Google n'ont pas réussi à trouver des informations utiles, aucune idée de comment je ferais cela?

Merci, Wayne

Répondre

2

Vous pouvez avoir une classe qui hérite de install puis faire:

from distutils.command.install import install 

class Install(install): 
    def run(self): 
     if not check_dependencies(): 
      # Tkinter was not installed, handle this here 
     install.run(self) # proceed with the installation 

def check_dependencies(): 
    try: 
     return __import__('Tkinter') 
    except ImportError: 
     return None 
+0

Et oui, Tkinter est dans la bibliothèque standard. – user225312

+0

Bien que sur certaines plateformes (Ubuntu), il n'est pas installé par défaut. –

+0

Wayne, je suis sur 10.10 et il est installé par défaut. De plus, ça fait partie de stdlib, donc si Python est là, ça devrait être là aussi? Quand était-il inclus dans le stdlib? Je ne sais pas, alors peut-être que ça peut être le problème. Quoi qu'il en soit, la solution ci-dessus devrait suffire. – user225312

0

Tkinter est dans le python standard library, il devrait toujours là.

+0

Comme je l'ai mentionné sur le post de sukhbir - il n'est pas installé par défaut sur Ubuntu - vous devez installer le paquet 'python-tk'. Au moins * dernière * fois j'ai installé Ubuntu ce n'était pas. –

0

Malheureusement, il n'y a pas de moyen multi-plateforme standard pour forcer Tkinter à être installé. Tkinter fait partie de la bibliothèque standard Python, donc les distributeurs qui suppriment Tkinter, ou d'autres modules de bibliothèque standard, et les conditionnent en tant qu'entités facultatives le font en utilisant leurs propres outils de gestion de paquets et, en général, vous devez connaître les commandes spécifiques pour chaque distribution. Le mieux que vous pouvez faire en général est le test et échouent gracieusement si Tkinter (ou tkinter en Python 3) n'est pas importable, donc quelque chose comme:

import sys 
try: 
    import Tkinter 
except ImportError: 
    sys.exit("Tkinter not found") 
Questions connexes