ich habe so das Gefühl, dass sich meine Scripte nach dem Kompilieren mit Py2exe anders verhalten als im unkompilierten Zustand.
Ich hatte auch mit pyinstaller kompiliert -> gleiches Ergebnis: geht nicht.
Ein Beispiel:
Ich muss per Script auf einem Webserver aus der mysql-DB ein Bild laden (Ja, ich weiß - Schreibe NIE nimmer nicht Binärdaten in die DB, aber das geht nicht anders!). Wenn ich also das Script interpretierend ausführe (also getimage.py) funktionierts wunderbar. Kompiliere ich das nach exe und führe das aus, dann kommt entweder Mist oder Schrott zurück. Soll heißen, das Bild ist entweder kaputt (andere Farben, kaum was zu erkennen) oder das Bild wird vom Browser nicht mehr als Bild erkannt (kleines Viereck mit rotem Kreuz als Platzhalter).
Ich habe auch mal die Pakete mitgetracet. Scheinbar ist der Dateninhalt ein anderer, als wenn ich das eben als .py ausführe. Wie kann sowas sein?
Mein Script:
Code: Alles auswählen
# -*- coding: iso-8859-15 -*-
import sys
import MySQLdb as sql
import cgi,socket,sys
import Image
import JpegImagePlugin
Image._initialized=2
sqlhost = socket.gethostbyname(socket.gethostname())
sqluser = 'wirdnicht'
sqlpasswd = 'verraten'
sqldb = 'meinetolledb'
formular = cgi.FieldStorage()
image_id = formular.getvalue("id")
def getvarbyrow(rowname,rowlist,result):
try:
rowlist
varpos = rowlist.index(rowname)
return result[varpos]
except:
return '-1'
sql_query = """
SELECT
image_file
FROM
tbl_images
WHERE
image_id = """ + str(image_id) + """
"""
conn = sql.connect(host=sqlhost,db=sqldb,user=sqluser,passwd=sqlpasswd)
conn.query(sql_query)
curs = conn.store_result()
result = curs.fetch_row()
image_file = result[0][0].tostring()
html_string = 'Content-Type: image/jpeg\n'
html_string += '\n'
html_string += image_file
print html_string
http://localhost/getimage.exe?id=123
Was dann eben das 123ste Bild aus der DB holt und anzeigt.
Ich denke mal, am Code liegt das nicht. Eher am Compiler.
Code: Alles auswählen
from distutils.core import setup
import py2exe
import codecs
setup(
version = "2.1",
description = "getimage",
name = "getimage",
options={"py2exe":{"optimize":2}},
console = ["getimage.py"],
)
Um Fragen im Voraus auszuschließen:
NEIN, ich kann das Script nicht interpretiert laufen lassen, es MUSS als EXE gestartet werden.
JA, das Bild muss binär in der DB stehen.
JA, IIS ist nötig.
NEIN, ich werde kein Linux vorziehen

Danke,
Ben