Überprüfen Sie, ob das Modul vorhanden ist, wenn es nicht in Python installiert ist

Heu, ich möchte überprüfen, ob ein Modul existiert, wenn es nicht installiert wird.

Irgendwelche Ideen, wie man das macht? Bisher habe ich diesen Code, der richtig 'f' druckt, wenn das Modul nicht existiert.

try: import keyring except ImportError: print 'f' 

Vielen Dank

5 Solutions collect form web for “Überprüfen Sie, ob das Modul vorhanden ist, wenn es nicht in Python installiert ist”

Hier ist, wie es gemacht werden soll, und wenn ich mich irre, bitte korrigieren Sie mich. Allerdings scheint Noufal es in einer anderen Antwort auf diese Frage zu bestätigen, also denke ich, dass es richtig ist.

Beim Schreiben des setup.py Skripts für einige Skripte, die ich geschrieben habe, war ich auf den Paketmanager meiner Distribution angewiesen, um die benötigte Bibliothek für mich zu installieren.

Also, in meiner setup.py Datei habe ich das gemacht:

 package = 'package_name' try: return __import__(package) except ImportError: return None 

Also, wenn package_name installiert wurde, gut, weiter. Else, installiere es über den Paketmanager, den ich mit subprocess angerufen habe.

Dieser Ansatz der dynamischen Import funktioniert wirklich gut in Fällen, in denen Sie nur eine Nachricht drucken möchten, wenn das Modul nicht installiert ist. Automatisches Installieren eines Moduls SOLLTE NICHT getan werden, wie die Ausgabe von Pip über den subprocess . Deshalb haben wir setuptools (oder verteilen).

Wir haben einige gute Tutorials auf Verpackung, und die Aufgabe der Abhängigkeiten Erkennung / Installation ist so einfach wie die Bereitstellung von install_requires=[ 'FancyDependency', 'otherFancy>=1.0' ] . Das ist nur so!

Aber wenn du es wirklich brauchst, von Hand zu tun, kannst du setuptools benutzen, um dir zu helfen.

 from pkg_resources import WorkingSet , DistributionNotFound working_set = WorkingSet() # Printing all installed modules print tuple(working_set) # Detecting if module is installed try: dep = working_set.require('paramiko>=1.0') except DistributionNotFound: pass # Installing it (anyone knows a better way?) from setuptools.command.easy_install import main as install install(['django>=1.2']) 
 import pip def import_or_install(package): try: __import__(package) except ImportError: pip.main(['install', package]) 

Dieser Code versucht einfach, ein Paket zu importieren, wobei das Paket vom Typ str ist , und wenn es nicht möglich ist, ruft Pip und versuche es von dort zu installieren.

Sie können pip install %s"%keyring in der außer teil, um dies zu tun, aber ich empfehle es nicht. Der richtige Weg ist, Ihre Anwendung mit distutils zu verpacken, so dass, wenn es installiert ist, werden Abhängigkeiten eingezogen.

Nicht alle Module können so einfach installiert werden. Nicht alle von ihnen haben eine einfache Installation, manche können nur durch den Aufbau installiert werden. Andere benötigen einige Nicht-Python-Voraussetzungen, wie zB gcc, was die Dinge noch komplizierter macht (und es auch bei Windows gut zu vergessen).

Also würde ich sagen, du könntest es wahrscheinlich für einige vorgegebene Module arbeiten lassen, aber es gibt keine Chance, dass es etwas generisches ist, das für jedes Modul funktioniert.

  • Serielle Importpythonschlange
  • Was passiert, wenn ich das Modul zweimal in Python importiere
  • Python ImportError Lade-Modul im Unterordner
  • Abfangen von Modulaufrufen?
  • PyCharm-Fehler: 'Kein Modul' beim Versuch, eigenes Modul zu importieren (Python-Skript)
  • Wie finde ich den Standort der Python-Modulquellen?
  • Wie kann ich feststellen, ob ein Python-Skript als Modul importiert oder als Skript ausgeführt wird?
  • Wo ist das Sys-Modul im Python-Quellcode?
  • Importieren von Modulen auf tragbare Pythonschlange
  • Warum ändert sich der Wert von __name__ nach der Zuordnung zu sys.modules [__ name__]?
  • Gib eine Liste der importierten Python-Module zurück, die in einem Skript verwendet werden?
  • Python ist die beste Programmiersprache der Welt.