Python Code mit openai Modul in .exe Datei umwandeln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Abi69
User
Beiträge: 5
Registriert: Donnerstag 14. September 2023, 08:28

Hallo Leute,
ich habe einen Python Code mit einem selbst erstellten Chatbot geschrieben. Nun habe ich eine graphische Oberfläche dafür programmiert und möchte diese gern als .exe Datei abspeichern. Wenn ich die graphische Oberfläche, ohne das openai-Modul als .exe Datei umwandel, funktioniert alles einwandfrei. Jedoch ist der Chatbot auf das openai-Modul angewiesen. Deshalb wollte ich nachfragen, was ich machen kann um meinen Python Code als .exe Datei zu speichern?

Hier der Code:

https://ibb.co/TrJdqXW
https://ibb.co/HrhCSwX

Wenn ich die umgewandelte .exe Datei öffnen möchte, öffnet sich leider kein Fenster. Ich kann die Datei also nicht öffnen.
Ich würde mich freuen wenn mir jemand helfen kann :-)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code als Bild ist nicht gut diskutiertbar, bitte direkt hier einkopieren. Dabei die wichtigen Code-Tags nicht vergessen.
Abi69
User
Beiträge: 5
Registriert: Donnerstag 14. September 2023, 08:28

Hier nochmal der Code:

from tkinter import *
import openai

#Chatbot
def askGPT(text):
openai.api_key = "XXX"
response = openai.Completion.create(
engine = "curie:ft-ruven-2023-03-30-09-22-21",
prompt = text,
temperature = 0.3,
max_tokens = 80,

)
antwort = response.choices[0].text
return antwort

BG_GRAY = "dimgray"
BG_COLOR = "paleturquoise"
BG_COLOR2 = 'teal'
TEXT_COLOR = "black"

Schriftart = "Helvetica 12"
Schriftart_fett = "Helvetica 11 bold"

class ChatApplication:
def __init__(self):
self.window = Tk()
self.setup_main_window()

def run(self):
self.window.mainloop()

def setup_main_window(self):
self.window.title("Chat")
self.window.resizable(width=False, height=False)
self.window.configure(width=400, height=500, bg=BG_COLOR)

#Kopfzeile
kopfzeile = Label(self.window, bg=BG_COLOR2, fg=TEXT_COLOR,
text="EAH-Jena Chatbot", font=Schriftart_fett, pady=10)
kopfzeile.place(relwidth=1, relheight=0.1)

#Teiler Kopfzeile
line = Label(self.window, width=400, bg=BG_GRAY)
line.place(relwidth=1, rely=0.09, relheight=0.0005)

#Textfeld
self.textfeld = Text(self.window, width=20, height=2, bg=BG_COLOR, fg=TEXT_COLOR,
font=Schriftart, padx=5, pady=5, wrap='word')
self.textfeld.place(relheight=0.75, relwidth=1, rely=0.09)
self.textfeld.config(width=self.textfeld.get('1.0', 'end-1c').count('\n')+2) #Textfeldüberlappung mit Scrollbar vermeiden
self.textfeld.configure(cursor="arrow", state=DISABLED)

#scroll bar
scrollbar = Scrollbar(self.textfeld)
scrollbar.place(relheight=1, relx=0.974)
scrollbar.configure(command=self.textfeld.yview)

#unteres label
unteres_label = Label(self.window, bg=BG_COLOR2, height=74)
unteres_label.place(relwidth=1, rely=0.825)

#Chatbox
self.chatbox = Entry(unteres_label, bg=BG_COLOR, fg=TEXT_COLOR, font=Schriftart)
self.chatbox.place(relwidth=0.75, relheight=0.06, rely=0.008, relx=0.011)
self.chatbox.focus()
self.chatbox.bind("<Return>", self._on_enter_pressed)

#Send-Button
send_button = Button(unteres_label, text="Senden", font=Schriftart_fett, width=20, bg=BG_COLOR,
command=lambda: self._on_enter_pressed(None))
send_button.place(relx=0.77, rely=0.008, relheight=0.06, relwidth=0.22)




def _on_enter_pressed(self, event):
msg = self.chatbox.get()
self._insert_message(msg, "Sie")

def _insert_message(self, msg, sender):
if not msg:
return

self.chatbox.delete(0, END) #Text wird aus Message-Box gelöscht
msg1 = f"{sender}: {msg}\n\n" #Message die angezeigt werden soll definieren
self.textfeld.configure(state=NORMAL)
self.textfeld.insert(END, msg1)
self.textfeld.configure(state=DISABLED)

antwort = askGPT(msg)


msg2 = f"{'Bot'}: {antwort}\n\n"

self.textfeld.configure(state=NORMAL)
self.textfeld.insert(END, msg2)
self.textfeld.configure(state=DISABLED)

self.textfeld.see(END)


if __name__=="__main__":
app = ChatApplication()
app.run()
Abi69
User
Beiträge: 5
Registriert: Donnerstag 14. September 2023, 08:28

Anbei noch ein Bild zu einem Fehlercode, wenn ich die .exe Datei ausführen möchte:
https://ibb.co/zHjCTtL
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Auch sowas laesst sich ganz wunderbar als Text hier reinkopieren. Dann kann man zB auch mal kopieren und suchen. Denn die Muehe, das abzutippen, wird sich eher keiner machen.

Und weil es nicht geklappt hat: bitte auch da Code Tags benutzen. Das ist der </>-Knopf im vollstaendigen Editor. Man kann das sonst nicht vernuenftig lesen, vor allem Code, aber auch die Fehlermerdungen profitieren davon.
Abi69
User
Beiträge: 5
Registriert: Donnerstag 14. September 2023, 08:28

Hier nochmal der Fehlercode als Text:
Traceback (most recent call last):
File "app.py", line 9, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "openai\__init__.py", line 28, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "openai\api_resources\__init__.py", line 1, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "openai\api_resources\completion.py", line 4, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "openai\api_resources\abstract\__init__.py", line 3, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "openai\api_resources\abstract\api_resource.py", line 3, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "openai\api_requestor.py", line 13, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "openai\http_client.py", line 9, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "requests\__init__.py", line 43, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module
File "urllib3\__init__.py", line 39, in <module>
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.1.0h 27 Mar 2018. See: https://github.com/urllib3/urllib3/issues/2168
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Man kann dem Link folgen & etwas rum suchen. Und findet https://levelup.gitconnected.com/fixing ... bfe8576957 - lässt sich nicht ganz lesen, aber ich würde mal das Python upgraden. Welche Version benutzt du? Und ggf. mit verschiedenen urllib3-Versionen experimentieren.
Antworten