Seite 1 von 1

import ServerSocket

Verfasst: Donnerstag 3. April 2014, 13:57
von zakspeed
Hallo Forum,
ich beginne neu mit python und habe eine (wahrscheinlich) peinliche Frage :oops:
In welchem Paket für den Raspberry Pi liegt denn dieser Server?
Ich möchte eine TCP Verbindung mit json realisieren.
Welches json Modul könnt Ihr empfehlen.

Danke im voraus
Tatjana

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 14:18
von BlackJack
@zakspeed: Das Modul heisst `SocketServer` und ist in der Python-Standardbibliothek. Dort gibt es ausserdem ein Modul für JSON mit dem Namen `json`.

Edit: Bevor Du das Rad neu erfindest: Für JSON-RPC gibt es schon etwas fertiges: https://pypi.python.org/pypi/jsonrpc/1.2

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 14:27
von zakspeed
Danke für die schnelle Antwort.

Dann dürfte doch bei der Eingabe von

$ python
Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import SocketServer
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/SocketServer.py", line 132, in <module>
import socket
File "socket.py", line 3, in <module>
class MyTCPHandler(SocketServer.BaseRequestHandler):
AttributeError: 'module' object has no attribute 'BaseRequestHandler'

eigentlich kein Fehler kommen.
Es sieht doch so aus, dass das Modul nicht in der Standard Bibliothek vorhanden ist.
Irgendwie fehlt mir der Durchblick.
Danke für den Tip mit json-rpc

Gruss Tatjana

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 14:30
von BlackJack
@zakspeed: Du darfst *Dein* Modul nicht `socket` nennen, denn dann wird das vor dem `socket`-Modul in der Standardbibliothek gefunden und Deins enthält natürlich nicht die Objekte die man aus dem `socket`-Modul in der Standardbibliothek erwartet. ;-)

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 14:47
von zakspeed
Leider stehe ich auf dem Schlauch :oops:

Mit der Eingabe

$ python

antwortet der Interpreter mit

Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.

Meine Eingabe (so steht es auch in der Source)
>>> import SocketServer

hier kommt die Fehlermeldung

bei der Eingabe von
>>>import time

kommt
>>>

da ist doch alles OK, oder

Gruss Tatjana

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 14:53
von /me
SocketServer verwendet offensichtlich das Modul socket aus der Standardbibliothek. Jetzt hast du aber ein eigenes Modul namens socket erstellt, das im Suchpfad vorher gefunden und daher statt des gleichnamigen Moduls in der Standardbibliothek verwendet wird. Nenne dein Modul anders.

BTW, gerade hab' ich noch in Wikipedia nach Zakspeed geschaut und jetzt taucht es hier noch mal auf. :D

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 15:17
von zakspeed
@ /me

Meinen Nickname habe ich von meinem Opa übernommen, der in den 70er Jahren als Unix Programmierer gearbeitet hat.
Er ist entfernt Verwandt mit dem Rennstall, der damals in der Formel 1 fuhr, deshalb der Nickname.

Zurück zum Thema:
Wie werde ich denn meine "eigene Socket" wieder los?
Die muss ich doch irgendwie erstellt haben.

Gruss
Tatjana

Sorry, ich habe den Text geändert, weil ich etwas falsch verstanden habe.

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 15:21
von BlackJack
@zakspeed: Die Dateien `socket.py` und falls vorhanden `socket.pyc` löschen (oder umbenennen).

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 15:28
von zakspeed
... geht nicht;-(((

Ich setzte den Raspi noch einmal in der Grundkonfi auf.
Geht wahrscheinlich schneller.

Habe ich jetzt gelernt, dass eigene Dateinamen keinen Modulnamen tragen sollten?

Bis später, und Danke für die schnelle Hilfe

Tatjana

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 15:31
von /me
zakspeed hat geschrieben:... geht nicht;-(((
Das muss eigentlich gehen.
zakspeed hat geschrieben:Habe ich jetzt gelernt, dass eigene Dateinamen keinen Modulnamen tragen sollten?
Dein eigener Programmpfad kommt in der Suchreihenfolge vor dem Suchpfad der Standardbibliothek. Wenn du also dort eine Datei liegen hast, deren Name identisch zu einem Modul der Standardbibliothek ist, dann wird diese auch als erstes herangezogen.

Re: import ServerSocket

Verfasst: Donnerstag 3. April 2014, 16:36
von zakspeed
Hurra, jetzt gehts;-)))

Ich habe aus Unkenntnis wahrscheinlich ziemlich rumgemurkst.
Nach der Neuinstallation keine Experimente, siehe da

geht;-)))

Danke für Eure Hilfe, vor allem mit dem Tip von JSON-RPC

Gruss Tatjana