2017-05-11 1 views
0

Ich habe Pyinstaller verwendet, um eine einzige .exe für Windows mit einer einzigen .py-Datei zu erstellen und es hat gut funktioniert. jetzt bin ich etwas komplexer geworden und habe mehrere .py-dateien erstellt, die in ordnern unter meiner main.py gespeichert sind. Ich habe durch die pyinstaller Führer lesen, noch etwas scheint nicht von mir zu arbeiten ..python pyinstaller Erstelle Datei Import Verzeichnis

meine Ordnerstruktur in Fenstern wird wie folgt, ich bin nur ein einfaches Beispiel zur Veranschaulichung mit:

app_root\main.py 
app_root\__init__.py 
     \library\__init__.py 
     \library\app_ext1.py 
     \library\app_ext2.py 
     \library\test\__init__.py 
     \library\test\app3.py 

in main.py ich bin den Import Code aus

from library.app_ext1 import get_info 
from library.app_ext2 import get_data 
from library.test.app3 import get_test 

so pyinstaller meiner main.py meine .spec Datei ausführen i. in der .spec-Datei habe ich

hiddenimports=['library'] 

pyinstaller keine Fehler beendet und meine einzigen EXE erstellt, aber wenn ich meine einzigen EXE ich folgende Fehlermeldung erhalten, laufen

C:\Users\user1\Desktop\1_file\dist>main.exe 
Traceback (most recent call last): 
    File "app_root\main.py", line 2, in <module> 
ImportError: No module named 'library' 
Failed to execute script main 

ich einen Test geschrieben Skript mit nur einer einzigen Py-Datei, und es wurde mit openpyxl einige einfache Arbeit zu tun (eine python-Bibliothek Excel) so in meinem Test-Py-Datei hatte ich „import openpyxl“, so in meinem spec-Datei i

verwendet
hiddenimports=['openpyxl'] 

das funktioniert gut, aber openpyx ist python lib, die mit pip installiert wurde, ich denke, ich verstehe nicht vollständig, wie ich meine eigenen Module/Skripte importieren, die ich erstellt und in einer Ordnerstruktur unterhalb meiner Haupt-.py-Skriptdatei gespeichert habe Verweise zwischen meinen .py-Skriptdateien wie in meinem obigen Beispiel.

Wie kann ich Pyinstaller erkennen meine .py-Skripte, die ich importiere?

+0

Ihnen fehlen die '__init __. Py'-Dateien in Ihren Paketen (Ordnern). –

+0

nein, sie sind da, sorry, ich habe sie nicht in das Beispiel gebracht. so mein Skript und Skripte alle .py-Dateien, die durch Importieren miteinander verknüpft sind, alles läuft gut in Python und pycharm Debuggen, alles funktioniert. also ich bin mir nicht sicher, warum Pyinstaller nicht funktioniert –

+0

Sie sollten Ihren Eintrag oben aktualisieren. –

Antwort

0

ok nicht sicher warum, aber ich habe gerade einen neuen Ordner in Windows erstellt, kopiert alle meine .py-Dateien mit der gleichen Ordnerstruktur wie zuvor und dann hat es funktioniert. das einzige, was fehlte, war die alle PyCharm Ordner wie .git, .idea und pycache

i habe bemerkt, bei der Fehlersuche, wenn ich Bibliothek, um etwas anderes wie „test“ umbenannt und meine Import Zeilen aktualisiert es noch würde verweisen Modul "library", wenn ich die .exe ausführte, die erstellt wurde.

Ich wusste, dass ich alles richtig gemacht habe, aber es scheint, dass etwas in einem der anderen Ordner gewesen sein könnte, die py charm dort einsetzt.

so werde ich nur alle meine Dateien in den neuen Ordner jedes Mal kopieren und löschen alle Ordner/Dateien, die ich sehe anders als die .py erforderlich.

Verwandte Themen