Ich möchte einige meiner Gedanken zu diesem Thema hinzufügen. Ich schreibe ein Skript, das alle Anforderungen für ein benutzerdefiniertes Programm überprüft. Es gibt viele Überprüfungen mit Python-Modulen.
Es gibt ein kleines Problem mit der
try:
import ..
except:
..
Lösung. In meinem Fall eines der Python-Module namens python-nmap
, aber Sie importieren es mit import nmap
und wie Sie sehen, die Namen stimmen nicht überein. Daher gibt der Test mit der obigen Lösung ein False-Ergebnis zurück, und es importiert auch das Modul beim Treffer, aber möglicherweise ist es nicht notwendig, viel Speicher für einen einfachen Test/Check zu verwenden.
Ich fand auch, dass
import pip
installed_packages = pip.get_installed_distributions()
installed_packages
nur die Pakete haben hat mit pip installiert. Auf meinem System pip freeze
kehrt über 40
Python-Module, während installed_packages
nur 1
, die ich manuell installiert (Python-nmap).
Eine andere Lösung unten, dass ich es wissen kann auf die Frage nicht relevant, aber ich denke, es ist zu eine gute Praxis ist halten die Testfunktion getrennt von dem einen, dass die es für einige könnte nützlich sein, installieren führt.
Die Lösung, die für mich arbeitete. Es basierte auf dieser Antwort How to check if a python module exists without importing it
from imp import find_module
def checkPythonmod(mod):
try:
op = find_module(mod)
return True
except ImportError:
return False
Hinweis: Diese Lösung kann nicht das Modul mit dem Namen findet python-nmap
auch, ich habe stattdessen nmap
zu verwenden (leicht zu leben), aber in diesem Fall das Modul nicht in den Speicher geladen werden.
Welche Art von Skript? – Christopher
Schreiben eines Python-Skripts zum automatischen Starten von Skype und Verwenden von tcpdump zum Sammeln von Paketdaten, damit ich analysieren kann, wie das Netzwerk funktioniert, wenn Sie eine Telefonkonferenz führen. – Kevin