flask: jinja2.exceptions.TemplateNotFound: index.html | Wie fixen?

Hallo zusammen,

nachdem ich jetzt Stunden, und zwar wirklich Stunden an nur einem, meiner Meinung nach unnötigem Problem gesessen habe, bitte ich nun um Hilfe.

Folgendes vorab: Nachdem ich die Datenbankkonfiguration ausgelagert habe, fing das Problem wieder an. Zuvor habe ich in die flask_app.py einfach folgendes eingetragen, was das Problem löste:

data = "Daten aus Python-Skript"

Ich persönlich arbeite mich ja in die Programmierung ein, habe aber das Gefühl, dass Flask irgendwie unnötig kompliziert ist. Aber das ist ja nicht wichtig.

Ich habe just for fun OpenAI mal über den Code laufen lassen: Zugegeben, ist das nicht die schlauste Option, aber nach 5 Stunden nur für diesen Code verzweifelt man doch etwas xD

Ich möchte Daten aus der Datenbank abrufen und auf der Webseite anzeigen lassen. Dazu existiert folgender Code:

Hauptverzeichnis/main.py:

from web.flask_app import app
from systm import main

if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0", port=5000)  # 5000 Standard

Hauptverzeichnis/systm/main.py:

from flask import Flask, render_template
from systm.d import create_db_connection

app = Flask(__name__)


# Datenbankverbindung initialisieren
db = create_db_connection()
cursor = db.cursor()


@app.route('/')
def display_data():
    # Hier können Sie Daten aus Ihrem Python-Skript abrufen
    cursor.execute("SELECT * FROM products")
    product_info = cursor.fetchall()

    # Diese Daten werden an die HTML-Datei übergeben
    return render_template('index.html', product_info=product_info)


# Route, um Produktinformationen anzuzeigen
@app.route('/products')
def display_products():
    # Informationen aus der Datenbank abrufen
    cursor.execute("SELECT * FROM products")
    product_info = cursor.fetchall()

    # Informationen an das HTML-Template übergeben und anzeigen
    return render_template('products.html', product_info=product_info)


if __name__ == '__main__':
    app.run(debug=True)

Hauptverzeichnis/systm/d.py:

import mysql.connector

def create_db_connection():
    db = mysql.connector.connect(
        host="",
        user="",
        password="",
        database=""
    )
    return db

Hauptverzeichnis/web/flask_app.py:

from flask import Flask, render_template
from systm.d import create_db_connection

app = Flask(__name__, template_folder='web/templates', static_folder='web/static')


# Deaktivieren des Template-Caching
app.jinja_env.auto_reload = True
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.config['STATIC_AUTO_RELOAD'] = True


# Datenbankverbindung initialisieren
db = create_db_connection()
cursor = db.cursor()


@app.route('/')
def display_data():
    # Daten aus der Datenbank abrufen
    cursor.execute("SELECT * FROM products")
    product_info = cursor.fetchall()

    # Diese Daten werden an die HTML-Datei übergeben und angezeigt
    return render_template('index.html', product_info=product_info)

Hauptverzeichnis/web/templates/index.html :

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" type="style/css" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
    <h1>Produktinformationen</h1>
    <table>
        <tr>
            <th>Produktname</th>
            <th>Verschlüsselungstyp</th>
            <!-- Weitere Spalten hinzufügen -->
        </tr>
        {% for product in product_info %}
        <tr>
            <td>{{ product[0] }}</td>
            <td>{{ product[1] }}</td>
            <!-- Weitere Spalten hinzufügen -->
        </tr>
        {% endfor %}
    </table>
</body>
</html>
HTML, Webseite, HTML5, Programmiersprache, Python, Webentwicklung, Python 3, Flask
Verstehs nicht.. -> ModuleNotFoundError: No module named 'sys.main'; 'sys' is not a package? (PYTHON)?

Vielleicht kann mir jemand von hier helfen. Ich hatte das Problem noch nie und Lösungen gibt es offenbar auch keine hilfreichen.

Das Projekt besteht aus dem Hauptordner, in diesem die Struktur:

Projektordner/

├── main.py

├── sys/

│ ├── __init__.py

│ ├── main.py

├── web/

│ ├── __init__.py

│ ├── flask_app.py

│ ├── static/

│ │ ├── style.css

│ ├── templates/

│ │ ├── index.html

trotzdem erhalte ich ständig diese Meldung: (PS, der Ordner wurde als Package und nicht Directory in Pycahrm erstellt.)

*:\****\****\****\****\bots\testert\dfgdfg\****\Scripts\python.exe "D:/PyCharm/PyCharm Community Edition 2022.2.3/PyCharm Community Edition 2023.1.4/plugins/python-ce/helpers/pydev/pydevd.py" --multiprocess --qt-support=auto --client **** --port **** --file "*:\****\****\****\****\****\Projekte\****\main.py" 
Connected to pydev debugger (build ****)
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 981, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'sys.main'; 'sys' is not a package


Process finished with exit code 1     

Gerade wo ich diese Frage formuliere, frage ich mich, warum es über eine andere Ordnerstruktur gestartet wird, als in der in der sich das Projekt befindet????

Verstehe halt nicht warum PyCharm diesen Weg wählt, was einfach nur dumm wäre aber gut, das tut es halt:
*:\****\****\****\****\bots\testert\dfgdfg\****\Scripts\python.exe



Code, Python, Python 3, Pycharm
discord.py AttributeError: 'ClientUser' object has no attribute 'avatar_url'?
Hi, 

ich bau momentan einen discord Bot mit python der ein Formular strten soll.

Code:

@bot.command()
async def testform(ctx):
    form = Form(ctx,'Title')
    form.add_question('Question 1','first')
    form.add_question('Question 2','second')
    form.add_question('Question 3','third')
    await form.start()

Error:

2023-09-09 08:58:09 ERROR    discord.ext.commands.bot Ignoring exception in command testform
Traceback (most recent call last):
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/core.py", line 235, in wrapped
    ret = await coro(*args, **kwargs)
  File "/workspaces/moon/dir/.py/homeworkBOT/main.py", line 43, in testform
    await form.start()
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/forms/form.py", line 221, in start
    embed.set_author(name=f"{self.title}: {n+1}/{len(self._questions)}", icon_url=self._bot.user.avatar_url)
AttributeError: 'ClientUser' object has no attribute 'avatar_url'


The above exception was the direct cause of the following exception:


Traceback (most recent call last):
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/bot.py", line 1350, in invoke
    await ctx.command.invoke(ctx)
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/core.py", line 1029, in invoke
    await injected(*ctx.args, **ctx.kwargs)  # type: ignore
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/core.py", line 244, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'ClientUser' object has no attribute 'avatar_url'

Ich verstehe nicht was mit 'avatar_url' gemeint ist da ich diese nicht in meinem Code benutze.

Ich hoffe jemand kann mir helfen.

Code, Python, Forms, Python 3, Discord, Discord Bot
Typkonvertierung eines Zeitstempels in Python?

Hallo an alle Python-Programmierer.

Ich habe versucht mit einem Python-Programm automatisch die Zeitstempel aus einer .tdms Datei (LabView-Datei) auszulesen, zu konvertieren & als eine .xlsx Datei (Excel-Datei) wieder abzuspeichern.

Allerdings ist die Uhrzeit im Zeitstempel der konvertierten Excel-Datei komischerweise immer genau 2 Stunden früher als in der tdms-Datei.

Hier folgend sieht man einen kurzen Auszug eines .tdms Messschriebs vom Kanal „SM States“. Geöffnet mit einem EXCEL-tdms Plugin. Somit kann man quasi mit Excel die .tdms Dateien öffnen:

Hier wird die erste Uhrzeit mit 04:21:06,391 PM bzw. 16:21:06,391 im 24h Format angegeben.

Wenn ich nun mit den folgenden Codezeilen im 12h Format versuche die "Timestamp" Daten in eine .xlsx Datei zu schrieben, kommt dabei das Problem mit den 2 Stunden Zeitversatz heraus:

 # Daten in Excel-Datei schreiben

      with pd.ExcelWriter(xlsx_output_path) as writer:

        for df_list, sheet_name in zip([sm_states_data_frames],

                        ['SM States']):

          for i, df in enumerate(df_list):

            if 'Timestamp' in df.columns:

              df['Timestamp'] = df['Timestamp'].apply(lambda x: x.strftime('%d.%m.%Y %I:%M:%S,%f %p'))

            df.to_excel(writer, sheet_name=sheet_name, index=False)

Hier zum besseren Verständnis ein Bild vom Code:

Hier sieht man nun das Ergebnis der Excel-Datei. Das Format an sich ist wie im obrigen Bild der .tdms Datei. Allerdings werden hier Microsekunden statt Millisekunden angezeigt, was aber denke ich erst mal nicht das Problem sein sollte.

Jedoch sieht man, dass nun 02:21:06 Uhr PM angezeigt wird, statt 04:21:06 Uhr PM der Quell-tdms-Datei. Das gleiche Problem habe ich übrigens auch wenn ich versuche den Zeitstempel in ein 24h Format umzuwandeln.

Hier noch ein Bild vom Dateiformat des "Timestamp" Reiters der Quell-tdms-Datei:

Ich wäre sehr dankbar, wenn mir hier jemand weiter helfen könnte!

Viele Grüße!

Jonas

Bild zum Beitrag
LabView, Programmiersprache, Python, Python 3
Discord ticket bot Öffnet kein ticket?

Wenn ich versuche ein neues ticket zu öffnen Kommt in discord der fehler: "Diese Interaktion ist fehlgeschlagen und im code-editor kommt die Fehlermeldung: "Traceback (most recent call last):

 , line 427, in _scheduled_task

  await item.callback(interaction)

, line 35, in ticket

  await interaction.defer(

AttributeError: 'Button' object has no attribute 'defer'

import discord

from discord.ext import commands

TOKEN = "DISCORD-BOTTOKEN"

bot = commands.Bot(command_prefix="!",

                   intents=discord.Intents.all(),

                   status=discord.Status.dnd)

async def change_bot_activity():

    activity = discord.Activity(type=discord.ActivityType.watching, name="")

    await bot.change_presence(activity=activity)

@bot.event

async def on_ready():

    print("Bot is Ready!")

    await change_bot_activity()

@bot.command(name="ticket")

@commands.has_permissions(administrator=True)

async def ticket(ctx):

    embed = discord.Embed(

        description="Drück den Button, um ein neues Ticket zu erstellen!"

    )

    view = CreateButton()

    await ctx.send(embed=embed, view=view)

class CreateButton(discord.ui.View):

    def __init__(self):

        super().__init__(timeout=None)

    @discord.ui.button(label="Create Ticket", style=discord.ButtonStyle.blurple, emoji="🎫", custom_id="ticketopen")

    async def ticket(self, button: discord.ui.Button, interaction: discord.Interaction):

        # Nutzerinteraktion bestätigen

        await interaction.defer()

        category = discord.utils.get(interaction.guild.categories, id=)

        for ch in category.text_channels:

            if ch.topic == f"{interaction.user.id} DO NOT CHANGE THE TOPIC OF THIS CHANNEL":

                await interaction.followup.send("Du hast bereits ein Ticket: {0}".format(ch.mention), ephemeral=True)

                return

        r1 = discord.utils.get(interaction.guild.roles, id=)

        overwrites = {

            interaction.guild.default_role: discord.PermissionOverwrite(read_messages=False),

            r1: discord.PermissionOverwrite(read_messages=True, send_messages=True, manage_messages=True),

            interaction.user: discord.PermissionOverwrite(read_messages=True, send_messages=True),

            interaction.guild.me: discord.PermissionOverwrite(read_messages=True, send_messages=True)

        }

        channel = await category.create_text_channel(

            name=str(interaction.user),

            topic=f"{interaction.user.id} DO NOT CHANGE THE TOPIC OF THIS CHANNEL!",

            overwrites=overwrites

        )

        await channel.send(embed=discord.Embed(

            title="Ticket erstellen",

            description="Pinge keine Teammitglieder",

            color=discord.Color.green()

        ))

        await interaction.followup.send(

            embed=discord.Embed(

                description="Erstelle ein neues Ticket {0}".format(channel.mention),

                color=discord.Color.white()

            )

        )

bot.run(TOKEN)

Bot, Programmiersprache, Python, Python 3, Discord, Discord Bot
Warum bekomme ich den Wert „none“ von der API zurück?

Ich arbeite gerade an einem Sprachassistenten, der mit

gpt-3.5-turbo 

kommunizieren soll, bekomme aber bei jeder Anfrage nur den Wert

none

zurück. Kann mir jemand sagen warum?

Mein Code:

import speech_recognition as sr
import openai
import pyttsx3

class ChatGPT:
  def __init__(self, api_key, rolle):
    openai.api_key = api_key
    self.dialog = [{"role":"system", "content":rolle}]

  def fragen(self, frage):
    self.dialog.append({"role":"user","content":"frage"})
    ergebnis = openai.ChatCompletion.create(
      model='gpt-3.5-turbo',
      messages=self.dialog
    )
    antwort = ergebnis.choices[0].message.content
    self.dialog.append({"role":"assistant","content":antwort})

def gpt(frage):
  if __name__ == '__main__':
    API_KEY = "sk-..."
    chat_gpt = ChatGPT(API_KEY, "...!")
    antwort = chat_gpt.fragen(frage)
    print(antwort)
    return antwort

def mikrofon_zu_text():
  # Initialisiere das Recognizer-Objekt
  recognizer = sr.Recognizer()
  recognizer.energy_threshold = 4000 

  while True:
    # Öffne das Mikrofon für die Aufnahme
    with sr.Microphone() as source:
      print("wait...")
      audio = recognizer.listen(source, timeout=5) 

      try:
        # Versuche, den Text zu erkennen
        text = recognizer.recognize_google(audio, language='de-DE')

        if "Sprache" in text or "sprache" in text:
          speak("Ich höre")
          print("Aufnahme gestartet.")
          audio = recognizer.listen(source, timeout=5) 
          transcription = recognizer.recognize_google(audio, language='de-DE')
          print("input: " + transcription)
          output = gpt(transcription)
           speak(output)

      except sr.RequestError as e:
        print("Fehler bei der Spracherkennung: {0}".format(e))

      except:
        print("~")

def speak(text):
 
  engine = pyttsx3.init() # object creation
  voices = engine.getProperty('voices')    #getting details of current voice
  engine.setProperty('voice', voices[0].id) #changing index, changes voices. o for male
  engine.say(text)
  engine.runAndWait()
speak("test")

# Aufruf der Funktion
mikrofon_zu_text()

Ich dachte, es könnte mein API-Schlüssel sein, aber ich habe andere Konten als andere verwendet und mein Guthaben beträgt nicht weniger als 5 $. Ich habe auch versucht, die Variable zu verfolgen, aber sie ändert sich nur von

Null

zu

 None
GPT, Programmiersprache, Python, API, Python 3, ChatGPT, OpenAI

Meistgelesene Fragen zum Thema Python 3