Ich ist sicher aufgefallen das ich euch in letzter Zeit mal wieder besonders auf den Sack gehe. Das hat einen ganz einfachen Grund:
Ich probiere momentan eine sogeannten "Python Environment" zu schreiben, oder auch
kurz pyEnv. Was ist das?
Nun Ich habe mir das so vorgestellt:
Man startet ein main script diese stellt dir eine Konsole bereit. In dieser Konsole
kannst du besimmte Befehle aufrufen und diesen gleich bestimmte Parameter übergeben.
Z.b:
Code: Alles auswählen
>>> add 5 10
15
>>>
in diesem ist eine Funktion definiert die dann nachher in der Konsole abrufbar ist.
Dieser "Plugin"-Ordner hieße dann Callbacks. Warum "Callbacks"? Weil ich es intern so realisiert habe:
Code: Alles auswählen
#!/usr/bin/python
import os
class CommandParser(object):
def __init__(self):
self.callbacks = {}
def register_callback(self, command, callback):
self.callbacks[command] = callback
def parse(self, string):
tokens = string.split()
command = tokens[0].lower()
if self.callbacks.has_key(command):
self.callbacks[command](tokens[1:])
print
parser = CommandParser()
##############################################################################
#Register Callbacks:
##############################################################################
while True:
command = str(raw_input('>>> '))
if command:
parser.parse(command)
irgendwo und macht sie mit einem Namen abrufbar.
Z.b:
Code: Alles auswählen
def exit():
import sys #Unschön, Ich weiß
print 'Ende.'
sys.exit()
parser.register_callback('exit', exit)
...
>>> exit
Ende.
brauchen nämlich z.B bestimmte Dateien mit denen sie arbeiten können und
Einstellungen die sie Abrufen können. (Z.b wenn ich mit meinem Modul pyTiddlyWikiarbeiten will)
Das heißt in dem Callbacks Ordner wird für jede Funktion ein weiter Unterordner erstellt
der den Namen der Funktion trägt. Also z.b:
Code: Alles auswählen
callbacks
exit
files
settings
erstellen damit pyEnv relativ portable bleibt. (Z.b BeautifulSoup) nach:
Code: Alles auswählen
depencies
BeautifulSoup.py
Jetzt brauche ich im Prinzip also folgendes:
Wenn pyEnv.py gestartet wird (Die Console) muss es alle Module in 'config/callbacks'
finden und importieren. Danach muss es die in den Modulen verfügbaren funktionen mittels:
Code: Alles auswählen
parser.register_callback(command, name)
abrufbar machen.
Die Scripte in Callbacks laden sich dann ggf. ihre Einstellungs-Daten
aus den "files" und "settings" Ordner wenn sie aufgerufen werden.
Wenn niemand die Zeit findet das zu lesen, kein Problem.
Wenn es niemand verstanden hat, macht euch nichts daraus.
Wenn mir jemand helfen könnte, toll.
Mfg,
CracKPod