Audioplayer - Audiocenter

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
ChristophS
User
Beiträge: 37
Registriert: Montag 7. August 2017, 12:52

Hallo Zusammen

Mein Projekt ist ein Audiocenter mit dem Raspberry zu bauen.

Der Raspberry hat dabei zwei Funktionen.

1. Das Zuschalten von verschiedenen Quellen an einen externen Verstärker.
- Phono
- Tape
- Mic
2. Das Abspielen von digitalen Quellen
- Playlisten
- Streaming
- CD
DAB wäre evtl. eine Option hat aber keine Priorität.

In einer ersten Fase wird der Pi (B+) mittels Touchscreen bedient, später mit Smartphone oder Tablet.

Schalten mit dem Raspi ist kein Problem (GPIO). Womit ich zur Zeit anstehe, das ist beim Mediaplayer. Nach dem Studieren diverser Forenbeiträge bin ich überzeugt, dass der MPD genau das kann was ich will.

Nach der Installation und dem probieren eines ersten Beispiels meldet Python, dass der MPDClient nicht vorhanden sei.
#!/usr/bin/python
from mpd import *

client = MPDClient()

client.connect("localhost", 6600)

for entry in client.lsinfo("/"):
print("%s" % entry)
for key, value in client.status().items():
print("%s: %s" % (key, value))

Das Terminal meldet:

name error: name 'MPDClient' ist not defined
Hat jemand eine Idee, an was das liegen könnte?

Danke und viele Grüsse

Christoph
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich rate mal mit Rosenthal: du hast deine Datei “mpd.py” genannt, und jetzt importiert die sich selbst. Schönes Beispiel übrigens auch, warum man KEINE Sternchenimporte macht. Denn so wäre das früher aufgefallen.
ChristophS
User
Beiträge: 37
Registriert: Montag 7. August 2017, 12:52

Danke für die rasche Antwort.
Das File heisst 'firststep.py'
from mpd import MPDClient()

client = MPDClient()
Reklamiert schon in der ersten Zeile.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

@ChristophS:
from mpd import MPDClient
Lass die Klammern hinter dem Klassennamen beim import weg.
When we say computer, we mean the electronic computer.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Was "reklamiert" da denn jemand?
Wie lautet die genaue Fehlermeldung?

Die Klammern in der Import-Zeile gehören da nicht hin.

Welches Paket hast du installiert? Aktuell scheint "python-mpd2" zu sein und damit gibt es hier keine Fehler.
ChristophS
User
Beiträge: 37
Registriert: Montag 7. August 2017, 12:52

@sls: die Klammern waren im "Original" nicht vorhanden

@sparrow: ich benutze den Thonny-Editor, es ist Thonny der reklamiert mit "name MPDClient is not defined".
Es ist python-mpd2 installiert.
In der Schell gibt es keine Fehlermeldungen:

>>from mid import MPDClient
>>client = MPDClient()
>>

Aber auch:
>>import mpd
>>client = mpd.MPDClient()
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Aha. Also mal importierst du von "mpd" mal von "mid".
Könntest du bitte den Code zeigen, den du wirklich verwendest und nicht irgendwelchen Fantasiecode, von dem du denkst, er würde identisch sein aber es nicht ist?

Offensichtlich liegt dein Problem im Editor. Es hat sich bewährt zum Schreiben des Codes einen Editor zu verwenden aber zum Ausführen das Ganze auf der Shell zu tun, weil man dort die Umgebung entsprechend sicher handhaben kann.

Es kommt ein "MPDClient is not defined"? Oder ist die Fehlermeldung auch nur interpretiert und nicht abgelesen? Die ist dann ganz sicher nicht vom Python-Interpreter oder zumindest nicht an der Stelle, wo du denkst, dass er auftritt - denn schlägt der Import in der gezeigten Zeile fehl, müsste die Fehlermeldung wie folgt aussehen:

Code: Alles auswählen

>>> from mpd import GibtEsNicht
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'GibtEsNicht' from 'mpd' (C:\...\lib\site-packages\mpd\__init__.py)
>>>
ChristophS
User
Beiträge: 37
Registriert: Montag 7. August 2017, 12:52

Python script:

#!/usr/bin/python
import mpd
client = mpd.MPDClient()

Das script heisst jetzt "secondstep.py"

Fehlermeldung:
>>> %Run secondstep.py
Traceback (most recent call last):
File "/home/pi/Desktop/secondstep.py", line 3, in <module>
client = mpd.MPDClient()
AttributeError: module 'mpd' has no attribute 'MPDClient'
>>>
In der Shell:
=============================== RESTART: Shell ===============================
>>> import mpd
>>> client = mpd.MPDClient
>>>

Im Terminal:

pi@dola-homecontrol:~/Desktop $ python3 secondstep.py
Traceback (most recent call last):
File "secondstep.py", line 3, in <module>
client = mpd.MPDClient()
AttributeError: module 'mpd' has no attribute 'MPDClient'
pi@dola-homecontrol:~/Desktop $
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@ChristophS: dann hat wohl die Pythonumgebung, die Du in Deinem Editor benutzt nicht, kein mpd installiert, sondern nur die, die auf der Shell läuft. Eins von beidem mußt Du dann umkonfigurieren.
ChristophS
User
Beiträge: 37
Registriert: Montag 7. August 2017, 12:52

Danke, dass ist es.

Wie konfiguriere ich das um?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich bleib dabei - irgendwas heißt da mpd, hat aber keine Klasse MPDClient drin. Was ergibt die Zeile

Code: Alles auswählen

import sys; print(sys.prefix); import os;print(mpd.__file__)
einmal in der Shell, und einmal im Editor ausgeführt?
ChristophS
User
Beiträge: 37
Registriert: Montag 7. August 2017, 12:52

@deets: Ich sag's ungern:
Dein allererster Post hatte die Lösung schon in sich. Dein letzter Post hat es bestätigt:
Vor zwei Tagen hies mein File tatsächlich mpd.py. Nach der Fehlermeldung habe ich das File secondstep.py erstellt und in meiner Dummheit vergessen das mpd.py zu löschen.
Wird mir nicht mehr passieren ...
Herzlichen Dank
Christoph
Antworten