# Python - ModuleNotFoundError:



## Devanther (11. Mai 2019)

```
# 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?


----------



## mihe7 (11. Mai 2019)

Ich kenne mich mit Python nicht aus, aber hast Du die Lib schon installiert? https://ipywidgets.readthedocs.io/en/stable/user_install.html


----------



## Devanther (11. Mai 2019)

hm. ist es nicht so, dass diese Widgets nur in Jupyter verfügbar sind?
Also in PyCharm bekomm ich das nicht zum Laufen?


----------



## mihe7 (11. Mai 2019)

Keine Ahnung. Wie gesagt, ich kenne mich mit Python nicht aus.


----------



## M.L. (11. Mai 2019)

Es kann natürlich sein, das Jupyter bestimmte Bibliotheken mitbringt, die aber keine Auswirkungen auf eine reguläre Python-Installation haben. Evtl. hilft der Kommandozeilenbefehl "pip install ipywidgets" trotzdem weiter.


----------



## Devanther (11. Mai 2019)

nein, auch der Kommandozeilenbefehl hilft nicht weiter


----------



## httpdigest (11. Mai 2019)

Was für einen Python Interpreter verwendest du denn? Und nein, PyCharm ist _kein_ Python Interpreter, es ist nur eine IDE - genauso wie Jupyter. In PyCharm kannst du in den Einstellungen den eigentlichen Python Interpreter einstellen - du musst sogar beim Anlegen eines neuen Projektes in PyCharm den zu verwendenden Interpreter angeben. Welches ist es denn nun also? Der hier z.B. https://www.python.org/downloads/windows/ enthält auch pip, um Module zu installieren.
Was ergab denn der Aufruf von `pip install ipywidgets`?
Btw. bei dem genannten Python for Windows befindet sich pip (bei Verwendung des Default Installationsverzeichnisses) in `C:\Program Files\Python37\Scripts\`.
Bei mir funktioniert's mit `pip install --user --upgrade ipywidgets` und Ausführen deiner Python-Datei einwandfrei.


----------

