Python - ModuleNotFoundError:

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
Devanther
User
Beiträge: 13
Registriert: Samstag 23. März 2019, 21:45

Code: Alles auswählen

# Diese .py - Datei wurde automatisch aus dem IPython - Notebook (.ipynb) generiert.
# 
# Gelegentlich wurde ich von Teilnehmern gefragt, ob ich die Kursmaterialien nicht 
# auch als normale .py - Datien bereitstellen könne. Dadurch ist es möglich, den Code
# ohne Jupyter zu öffnen, beispielsweise wenn Python-Programme in einem Terminal oder in 
# Eclipse entwickelt werden.
# 
# Dem möchte ich hiermit nachkommen. Ich empfehle dir aber trotzdem, schau' dir lieber die
# IPython - Notebooks direkt an, oder den HTML-Export eben dieser. Dieser reine .py-Export
# ist meiner Meinung nach etwas unübersichtlich.
#!/usr/bin/env python
# coding: utf-8

# ## Musterlösung: CSV-Datei über ein Formular erfassen
# 
# Stell dir vor, du möchtest die Anwesenheit von Studierenden überprüfen. Dazu möchtest du zu jedem Studierenden folgende Daten erfassen: Vorname, Nachname, Studienfach.
# 
# Es gibt 5 verschiedene Studienfächer:
# 
# - Mathe
# - Informatik
# - Philosophie
# - Kulturwissenschaften
# - Psychologie
# 
# Aufgabe: Erstelle ein komfortables Formular, mit dem du die Studierenden erfassen kannst! Sorge dafür, dass nach jedem Schritt alle bisher erfassten Daten in einer .csv-Datei (students.csv) abgespeichert werden. In der .csv-Datei sollen 3 Spalten existieren: Vorname, Nachname und Studienfach.
# 
# Verwende für den Vor- bzw. Nachnamen ein Textfeld und für das Studienfach ein Auswahlmenü, mit dem das Studienfach ausgewählt werden kann. Erstelle dann einen Button, mit dem der aktuelle Studierende in die .csv-Datei geschrieben wird und über das Formular anschließend der nächste Studierende erfasst werden kann.

# In[10]:


import csv
import ipywidgets as widgets
from IPython.display import display

firstname = widgets.Text(description="Vorname:", value="")
display(firstname)

lastname = widgets.Text(description="Nachname:", value="")
display(lastname)

subject_options = [
    "---",
    "Mathe", 
    "Informatik", 
    "Philosophie", 
    "Kulturwissenschaften", 
    "Psychologie"
]

subject = widgets.Dropdown(description="Fach:", options=subject_options)
display(subject)

button = widgets.Button(description="Speichern!")
display(button)

def button_click(event):
    firstname_value = firstname.value
    lastname_value = lastname.value
    subject_value = subject.value
    
    if firstname_value != "" and lastname_value != "" and subject_value != "---":
        with open("./students.csv", "a", newline="", encoding="utf-8") as f:
            writer = csv.writer(f, delimiter=";")
            writer.writerow([firstname_value, lastname_value, subject_value])
        firstname.value = ""
        lastname.value = ""
        subject.value = "---"
        
    else:
        print("Bitte das Formular korrekt ausfüllen")
    
button.on_click(button_click)


# In[ ]:



Hallo,

wenn ich das in PyCharm ausführe bekomme ich ne Fehlermeldung.
Traceback (most recent call last):
File "C:/Users/Mariusz/.PyCharmCE2018.3/config/scratches/16 - Jupyter/Aufgabe - CSV Datei ueber ein Formular erfassen (Musterloesung).ipynb.py", line 34, in <module>
import ipywidgets as widgets
ModuleNotFoundError: No module named 'ipywidgets'
Kann mir jemand sagen, wie ich diese py. Datei zum Laufen bringe?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Devanther: das funktioniert nur innerhalb von Jupyter.
Devanther
User
Beiträge: 13
Registriert: Samstag 23. März 2019, 21:45

Richtig, es ist auch ein Jupyter Projekt. Aber es muss doch eine Möglichkeit geben, dass in PyCharm zum Laufen zu bringen?
Was muss ich verändern, damit dass in meinem PyCharm auch läuft?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ganze Programm besteht nur aus dem Abfragen von einigen Jupyter-GUI-Widgets. Und das ist auch die Aufgabenstellung, also ziemlich witzlos, das ohne Jupyter machen zu wollen.

Läßt man das weg, bleibt eben eine Formularabfrage in der Konsole:

Code: Alles auswählen

firstname_value = input("Firstname")
lastname_value = input("Lastname")
subject_value = input("subject")
with open("./students.csv", "a", newline="", encoding="utf-8") as f:
    writer = csv.writer(f, delimiter=";")
    writer.writerow([firstname_value, lastname_value, subject_value])
Devanther
User
Beiträge: 13
Registriert: Samstag 23. März 2019, 21:45

Versteh ich leider nicht, was du mir mitteilen willst^^

Gibt es eine Möglichkeit das in PyCharm zum Laufen zu bringen? Wenn ja, wie?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Nein, keine.
Devanther
User
Beiträge: 13
Registriert: Samstag 23. März 2019, 21:45

Diese Jupyter-GUI-Widgets gibt es nur in Jupyter?

OMG
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie der Name schon sagt.
Antworten