pyinstaller scheint nicht zu finden, eine Daten-Datei
Edit 3: ich ersetzte __file__
mit sys.argv[0]
, wenn ich brauche, um zu wissen, wo mein script/Programm. Dies ist nicht genau das gleiche, aber in meinem Fall scheint es gut laufen (zumindest auf ausführbare version...). Jetzt alles ist in Ordnung, in einem Datei-Modus, mit Verwendung der akzeptierten Antwort-Funktion Zugriff auf Ressource-Dateien!
Edit 2: wie im akzeptierten Antworten, Kommentare, problem kommt von Pfad-Auflösung in meinem Skript, ich versuche es mal mit __file__
um den Speicherort der Skript, so dass ich Zugriff auf die Ressource-Dateien. Dies funktioniert nicht einmal verpackt, als __file__
zurückkehren wird, mit dem Namen von Python.dll
dem script so ziemlich immer kein Weg und nur ein Dateiname. Also ich finde einen anderen trick, um Zugang zu Ressource-Dateien; ein work-around für den moment zu verschieben aktuelle Verzeichnis in den Pfad für ausführbare Dateien.
Durch die Art und Weise, bedeutet dies, dass die ConfigParser melden sollten, problem beim Zugriff auf die Datei, und nicht, dass ein Abschnitt fehlt.
Ich werde aktualisieren, diese Frage mit der Art, wie ich dieses Problem gelöst, Pfad-Auflösung Frage.
Ich habe Probleme mit pyinstaller
, und als es das erste mal verwende ich es, es ist sicher, dass ich was falsch gemacht habe.
So, hier ist das problem: pyisntaller
läuft reibungslos auf einem Skript, das ich schrieb, und erzeugt einige Sachen in dist
Ordner. Ok, also ich will jetzt ausführen, um zu sehen, wenn alles gut ging, und hier ist, was ich bekomme:
C:\Program Files\PyInstaller\pyinstaller-1.5.1>p_tool\dist\p_tool\p_tool.exe -?
Traceback (most recent call last):
File "<string>", line 104, in <module>
File "p_tool\build\pyi.win32\p_tool\outPYZ1.pyz/logging.config", line 76, in f
ileConfig
File "p_tool\build\pyi.win32\p_tool\outPYZ1.pyz/logging.config", line 112, in
_create_formatters
File "p_tool\build\pyi.win32\p_tool\outPYZ1.pyz/ConfigParser", line 532, in ge
t
ConfigParser.NoSectionError: No section: 'formatters'
Meine erste Idee war, dass die logging.conf
Datei fehlt, also habe ich es (und einige andere Ressource-Dateien) in die p_tool.spec
Datei, aber diese ist nicht besser.
Python-version: 2.6.6, unter WinXP. Ich bin mit pyinstaller
wie ich, wird es brauchen, um die Paket-Dateien für eine Solaris-workstation.
So, jemand hat dieses problem? Das einzige Thema ist folgende Frage: PyInstaller Problem, ganz nah an mein problem, aber hoffnungslos er bekam keine Antwort.
Edit3: details zur Anmeldung entfernt, da nicht wirklich auf das problem beziehen.
- dies scheint eine bessere Lösung: stackoverflow.com/questions/404744/...
- Korrekt, danke für den link!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens, könnte es klug sein, zu drucken config_file /os.Pfad.existiert(config_file) vor dem Lesen, damit man sicher sein kann, wo die Datei ist und wenn python finden können.
Als tatsächlich darauf zugreift
os.path.split(__file__)
sieht fast richtig, aber ich bin nicht sicher, dass es richtig funktioniert unter pyinstaller - die richtige Art von Verpackung-Dateien hinzufügen, um Sie der .spec-Datei, pyinstaller wird dann laden Sie Sie zur compile-Zeit und entpacken Sie Sie, um $_MEIPASS2/zur Laufzeit. Um die _MEIPASS2 dir in verpackt-Modus und verwenden Sie das lokale Verzeichnis entpackt (Entwicklung) - Modus, ich benutze diese:__file__
ist gelöst, da das script, relativ zurPython.dll
, was bedeutet, dass in meinem Fallos.path.split(...)[0]
ist immer leer. Anders gesagt, es ist, als ob mein Skript würde es sich um ein lokales jedem Ort, wo es heißt... So, jetzt habe ich, um herauszufinden, einen anderen Weg für den Zugriff auf meine Ressourcen-Dateien. :-/resource_path
Funktion, wird es sicherlich nützlich sein, wenn ich werde versuchen eine-Datei-Verpackung. Also, Ihre Antwort ist lohnt sich das Kopfgeld! Vielen Dank für Eure Hilfe 🙂Die Fehlermeldung
ConfigParser.NoSectionError: No section: 'formatters'
deutet darauf hin, dass es nicht eine fehlende Datei, sondern eine Datei mit einem fehlenden Abschnitt, den Sie suchen sollen.Ich hatte ein ähnliches problem, konnte aber nicht an ein elegantes Update so weit. Der 'hack', den ich benutze, hat mich Trog, sagen, mein Projekt befindet sich in
'~/project/project_root'
zunächst in der .spec-Datei:Hier ist die
Analysis
Objekt, im Grunde Entferne ich alle meine Projekte auf Dateien aus derPYZ
also kein import ist dort vorbeigegangen und der logger die relative Pfade werden nicht berechnet von dort aus. Erstellen Sie danach eineTree
Objekt aus dem Projekt.Fügen Sie diesen Baum in die Liste der TOC übergeben wird, zu SAMMELN, so :
Sollten Sie Ihre Projekt-Ordner Hinzugefügt, um den dist Ordner. Das problem ist, dass Sie werden am Ende verteilen die pyc ' s Ihre Projekt-auch, aber nicht finden konnten ein besserer Weg, so weit. Sehr interessiert in der gültigen Lösung.
pyc
Dateien ausgeführt werden, die mit den eingebetteten Python-executable? Ich meine, dies wird auf jedem computer laufen mit oder ohne Python installiert?PyInstaller
.excluded_sources
wie folgt:pyz = PYZ(a.pure - excluded_sources)
? Wenn ja, dann vielleicht dienot
zu viele infor x in a.pure if *not* x[0].startswith(...
. Vielleicht habe ich es nicht verstanden, als es immer noch nicht funktioniert; aber dasspyc
Dateien ist immer noch besser als nichts, wenn verpackt für die Python-version.__file__
war-nicht wieder dem erwarteten Wert. So, ich am Ende mitsys.argv[0]
zum bestimmen der Position des aufgerufenen ausführbaren. Ich hoffe, dass es keine Nebenwirkung, denn es ist alles, was ich mir vorstellen könnte zu arbeiten, um dieses Problem. Danke für deine Hilfe jedenfalls!