2016-07-08 14 views
0

Ich versuche mein Programm mit Pyinstaller zu packen. Der Code läuft gut auf Windows und verwendet SqlAlchemy, OpenCV und Pyodbc-Pakete.Python: Sqlalchemy vermasselt pyinstaller?

Ich rannte pyinstaller um die ausführbare Datei zu erstellen und versuchte es auszuführen. Ich erhalte eine Fehlermeldung:

ImportError: No module named ConfigParser 

jetzt, reran ich die gleiche Sache und sah Protokolle von pyinstaller und bekam eine Warnung:

WARNING: Hidden import "sqlalchemy.sql.functions.func" not found! 

zusammen mit ein paar anderen. dann gab es eine Warnung über den Versuch, ConfigParser in Klein- und Großbuchstaben zu importieren.

Attempted to add Python module twice with different upper/lowercases: ConfigParser 

Was könnte das Problem hier sein?

Antwort

0

Also, ich habe es herausgefunden. In gewissem Maße.
Scheint wie pyInstaller geht nicht so gut mit SWIG-Dateien.

In sqlalchemy.utils gibt es eine Datei namens compat.py. Es ist da, um das Modul mit allen Versionen von Python kompatibel zu machen.

zum Beispiel in Python2.x, gibt es ConfigParser während in py3, es configparser gestattet
So ein Teil in compat.py gibt es damit zu umgehen:

if py3: 
    import configparser 
    # Some other such import statements 
elif py2: 
    import ConfigParser as configparser 

Nun pyinstaller stapfte wird hier, da es sich nur auf den Import konzentriert und daher versucht, beides zu importieren und kläglich zu versagen.
Meine groben Workaround zu diesem umfasste die Änderung der compat.py Datei und nur die Teile für die Python-Version behalten, die ich habe (2.x).
Running pyinstaller erwies sich erneut als Erfolg! :)

Obwohl das ist alles sehr grob und es gibt wahrscheinlich etwas besseres da draußen, aber ich konnte nichts finden, so teile ich, was für mich arbeitete.