Verständnisproblem mit python

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ssw
User
Beiträge: 6
Registriert: Donnerstag 29. Oktober 2009, 11:23

Hallo

Ich habe keine Erfahrung mit python.

Ich habe ein Control für ein gDesklet geschrieben, dass funktioniert.

Nun möchte ich es erweitern und habe folgendes Problem.
Egal welche Änderung ich in der __init__.py Datei mache, die Änderungen werden nicht angenommen.
Es läuft immer der "alte" Code.

Ich habe alles erdenkliche ausprobiert, kein Erfolg.
Wenn ich das Control mit test-control.py teste, habe ich den aktuellen Code.

Ich habe echt keinen Plan mehr.
Ich habe python 2.5 und 2.6 installiert und Ubuntu 9.04

Bitte um Hinweise :-)

Georg
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Erzaehl doch mal ein bisschen mehr ueber den Ordneraufbau und ueber den "alten" und "neuen" Code.
ssw
User
Beiträge: 6
Registriert: Donnerstag 29. Oktober 2009, 11:23

Hallo

Also ich habe in /usr/share/gdesklets/Cortrol einen Ordner Webservice.
In diesem ist das Interface IWebservice

Code: Alles auswählen

from libdesklets.controls import Interface, Permission

class IWebservice(Interface):
    host = Permission.READWRITE
    port = Permission.READWRITE
    context = Permission.READWRITE
    user = Permission.READWRITE
    pw = Permission.READWRITE
und die Datei __ini__.py

Code: Alles auswählen


from libdesklets.controls import Control
from IWebservice import IWebservice

class Webservice(Control, IWebservice):

	def __init__(self):
		self.__host = '10.0.0.170'
		self.__port = 8080
		self.__context = 'testws-1.0-SNAPSHOT'
		self.__user = 'admin'
		self.__pw = 'admin'
		Control.__init__(self)

	def set_host(self, h):
		self.__host = h

	def get_host(self):
		return self.__host

	def __set_port(self, p):
		self.__port = p

	def __get_port(self):
		return 'holen des ports'
	
	def __set_context(self, c):
		self.__context = c

	def __get_context(self):
		return 'holen des contextes'

	def __set_user(self, u):
		self.__user = u

	def __get_user(self):
		return 'holen des users'

	def __set_pw(self, pw):
		self.__pw = pw

	def __get_pw(self):
		return 'holen des pws'

	host   = property(fget=get_host,fset=set_host, doc = "Host" )
	port   = property(fget=__get_port,fset=__set_port, doc = "Port" )
	context   = property(fget=__get_context,fset=__set_context, doc = "Context" )
	user   = property(fget=__get_user,fset=__set_user, doc = "User" )
	pw   = property(fget=__get_pw,fset=__set_pw, doc = "Passwort" )

def get_class(): return Webservice
Das hat alles funktioniert.
Jetzt wollte ich das ganze erweitern um weitere porperties und den Code für den Webserviceaufruf.

Ich habe ständig die Meldung bekommen, dass kein Control für das Interface definiert ist.
Da es mit test-control.py funktioniert hat, habe ich ein bischen länger gebraucht, dass ich gemerkt habe, dass beim Aufruf des Desklets nicht der aktualisierte Code von __init__.py genommen wird.

Das Interface wird aktualisert, bekommt bei Änderungen auch immer die neue Interfacenummer (in der gdesklet shell)

Da ich die __jni__.py schon öfters geändert habe und das auch funktuiert hat, bin ich ein bischen ratlos.

Da ich, wie gesagt, mit python und Ubunutu wenig Erfahrung habe, kann ich das Problem nicht wirklich lokalisieren.
Wird eine pyc Datei benötigt? Lösche ich diese weg, funktioniert der Aufruf auch. Starte ich die gdesklet shell, werden die pyc Dateien erstellt.

Legt python irgenwo eine Kopie an?
Komme ich vielleicht mit den python Versionen durcheinander ?

Viele Fragen....
:wink:

Gruß

Georg
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Wird der Code vielleicht importiert?
Versuche es mal mit alle .pyc dateien umbennenen.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Loeschen ist im Normalfall besser als umbenennen.

@OP Warum programmierst du eigentlich Java in Python-Syntax? Und warum so viel Logik in einer `__init__.py`? Das gehoert in ein "richtiges" Modul, am besten zu deinem "Interface".
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Zudem frage ich mich, inwiefern das Thema in dieses Subforum passt - wir haben doch auch das Gtk / GNOME Forum. ;-)
ssw
User
Beiträge: 6
Registriert: Donnerstag 29. Oktober 2009, 11:23

Hallo

Sorry, dass ich im falschen Forum gepostet habe.

Doch möchte ich noch die Lösung anhängen.
http://mein-neues-blog.de/2008/02/14/or ... tallation/

Die controls.reg löschen brachte den Erfolg.

@cofi
Da ich mir erst vor kurzen Ubuntu installiert und da Desklets gesehen habe, wollte ich es ganz einfach mal ausprobieren.
Ich bin daher nicht ganz vertraut mit richtigen python code.

Danke


Georg
Antworten