Ich habe ein Python 3.5 64-Bit-Programm (erforderlich für Tensorflow für Windows), das OpenCV verwendet. Ich verteile es mit pyinstaller.
Ich habe mein Programm mit Windows 10 erstellt
%Vor%Auf meinem Computer wird die .exe erstellt und läuft perfekt. Auf anderen Nicht-Windows 10-Computern
Ein
%Vor%Gibt
zurückImportError: Laden der DLL fehlgeschlagen: Das angegebene Modul konnte nicht gefunden werden.
Ich kann eine Menge darüber auf dem pyInstaller-Thread sehen, aber ich kann nicht sagen, wie ich es in die Praxis umsetzen soll. Dependency Walker sagt, dass ich eine Reihe von DLLs vermisse
%Vor%Okay, von den pyInstaller-Threads weiß ich, dass diese DLLs existieren
%Vor%Unter mehreren Unterordnern basierend auf Architektur.
Ich habe versucht, meine .spec-Datei hinzuzufügen
%Vor%Oder für meine besondere Architektur
%Vor%Was ich dachte, wurde vorgeschlagen hier
"Installieren Sie das Windows Software Development Kit (SDK) für Windows 10 und Erweitern Sie die .spec-Datei, um die erforderlichen DLLs einzubinden, siehe "Verteilen Software, die den Universal CRT "in dem oben genannten Link verwendet, Nummer 6. "
Das hatte keine Wirkung. Ich bekomme Hunderte von Fehlern wie
%Vor%Aber ich kann diese DLL hier sehen
%Vor%Also habe ich posthoc den ganzen Ordner buchstäblich kopiert
%Vor% Aber es ist nicht klar, wie man diese mit dem .exe
verbindet. Es ist klar, pyInstaller vorher zu wissen, ist vorzuziehen.
Ich habe es auch versucht
%Vor%Und es hat sie immer noch nicht gefunden
Ich habe auch versucht, diesen Ordner zu PATH hinzuzufügen. Irgendwelche Ideen?
Ich muss das selbst tun, aber noch nicht. Ich werde versuchen, meine vollständige Lösung zu veröffentlichen, wenn ich es tue. In der Zwischenzeit ...
Ich denke, Sie müssen möglicherweise ausdrücklich verlangen, dass sie einbezogen werden, anstatt nur den Suchpfad zu erweitern.
Wahrscheinlich verwenden sie die Klasse Tree
, die sie erwähnen, um alle Dateien für Sie zu sammeln.
Wenn Sie Ihre Spezifikationsdatei zur Verfügung gestellt hätten, könnte ich sehen, was vor sich geht. Von hier ist es wahrscheinlich, dass Sie keine Dateien enthalten.
Von hier aus gibt es zwei Methoden:
Überprüfen Sie Binärdateien (inkl. DLL) hier pininstaller Dokumentation über das manuelle Einbinden von Dateien.
Überprüfen Sie Dateien hier hinzufügen die pyinstaller-Dokumentation über die Aufnahme von Dateien manuell.
Eine Beispielspezifikationsdatei, die DLL-Dateien aus Ihrem DLL-Ordner enthält.
block_cipher = None
a = Analysis(['minimal.py'],
pathex = ['/Developer/PItests/minimal'],
binaries = [ ( 'C:\Program Files (x86)\Windows Kits\Redist\ucrt\DLLs', '.' ) ],
datas = [ ('helpmod/help_data.txt', 'helpmod' ) ],
hiddenimports = [],
hookspath = None,
runtime_hooks = None,
excludes = None,
cipher = block_cipher)
pyz = PYZ(a.pure, a.zipped_data, cipher = block_cipher)
exe = EXE(pyz,... )
coll = COLLECT(...)
Ich habe gesehen, dass PyInstaller und Py2exe unzählige Male keine dlls aufnehmen konnten. Persönlich verpacke ich meine Verwendung von ihnen in Batch oder Bash aus einer Reihe von Gründen, um zu erweitern, was sie tun. Logisch sehe ich ein Argument für das Wrapping sie in PY-Skripte selbst ...
Wie auch immer, es ist vielleicht einfacher, die Abhängigkeiten einfach durch ein Wrapper-Skript in Ihr Installationspaket zu kopieren, anstatt damit zu kämpfen.
Normalerweise erhalten Sie einen dll fehlenden Fehler, wenn Sie versuchen, etwas zu starten, das es fehlt. Fügen Sie jede Datei manuell zum Verzeichnis hinzu und notieren Sie, was Sie selbst benötigen. Dann schreibe das.
Tags und Links python opencv windows pyinstaller