Ich habe begonnen Pyinstaller über Py2Exe zu benutzen. Allerdings bin ich ziemlich schnell auf ein Problem gestoßen. Wie schließe ich Module aus, die ich nicht möchte, und wie betrachte ich diejenigen, die in die einzelne ausführbare Datei aufgenommen werden?
Ich kann einige pyd
und dll
Dateien aus dem DLL-Ordner in meiner Python-Installation entfernen, so dass Pyinstaller sie nicht findet und sie daher nicht enthält. Ich möchte das mit all den Modulen nicht wirklich machen, da es ziemlich anstrengend wird.
Ich habe versucht, die Spec-Datei zu bearbeiten, die Pyinstaller macht.
%Vor%Aber die Größe der Datei blieb gleich, so dass ich schlussfolgerte, dass das nicht funktioniert hat.
Also, wie kann ich sehen, welche Module Pyinstaller enthalten und wie schließe ich diejenigen aus, die ich nicht will?
Nur um die Optionen hier zusammenzufassen, wenn ich sie benutze.
PyInstaller TOCs - sind, wie die Dokumentation sagt:
Ein Inhaltsverzeichnis scheint eine Liste von Tupeln des Formulars zu sein (Name, Pfad, Gib 'den Code ein). Tatsächlich ist es eine geordnete Menge, keine Liste. Ein Inhaltsverzeichnis enthält keine Duplikate, bei denen die Eindeutigkeit nur auf dem Namen beruht.
Mit anderen Worten, einfach:
%Vor%Also, in Ihrer .spec-Datei - sobald Sie die Analyseergebnisse des Skripts haben - können Sie die jeweiligen TOCs dann entweder ändern:
Verwenden Sie für spezifische Dateien / Module die Differenz (-) - und Schnittmengenoperationen (+), um ein Inhaltsverzeichnis zu ändern. *
Zum Hinzufügen / Entfernen von Listen von Dateien / Modulen iterieren Sie über das Inhaltsverzeichnis und vergleichen Sie mit dem Mustervergleichscode.
(* Abgesehen davon, dass der Unterschied zu arbeiten scheint, müssen Sie explizit in TOC()
umwandeln, und beachten Sie, dass nur der Name das Element der Menge eindeutig definiert ('sqlite3', None, None)
etc.)
Ein anschauliches Beispiel (aus einer .spec-Datei) ist unten, wo ich - besser oder schlechter - alle Referenzen auf scipy, IPython und zmq lösche; lösche spezifische sqlite, tcl / tk und ssl .DLLs; füge eine fehlende opencv .DLL ein; und schließlich alle Datenordner entfernen, die neben Matplotlib-Einsen gefunden wurden ...
Ob der resultierende Pyinstaller .exe dann funktioniert, wenn eine .pyc-Datei versucht, eine erwartete .DLL zu laden, lautet moot :-/
Tags und Links python pyinstaller