Hallo!
Ich versuche im Moment eine Umgebung zu optimieren.
Ich habe mein Projekt im svn und lasse es auf verschiedenen Systemen laufen.
Kurzgesagt:
Ich entwickele auf System A und moechte Veraenderungen auf System B testen ohne jedesmal einen svn check in zu machen.
Deswegen dachte ich ich koennte symbolische links auf den python code legen.
Entwickeln und schnelle tests in Folder A.
Folder B hat jeweils symbolische links auf python code in folder A so dass ich hier grosse Tests laufen lassen kann.
Meine Umgebung soll Systemabhaengig den PythonPath setzen auf folder A oder folder B.
Mein Ziel ist dass der Objectcode von python in die jeweiligen Systemordner gelegt werden.
Glaubt ihr das geht?
Alternativen?
Verlinkten python code auf verschiedenen Platformen
Was für Systeme ? - oder soll es überall funktionieren
Wie greifst du auf die Ordner zu wirklich nur ein einfacher Link oder Freigaben ?
Laufen die System gleichzeitig oder mal das eine und dann das andere ?
PythonPath setzen - hast du verschiedene Python versionen ?
oder wozu brauchst du den ?
Wie greifst du auf die Ordner zu wirklich nur ein einfacher Link oder Freigaben ?
Laufen die System gleichzeitig oder mal das eine und dann das andere ?
PythonPath setzen - hast du verschiedene Python versionen ?
oder wozu brauchst du den ?
Was für Systeme ? - oder soll es überall funktionieren
Soll ueberall funktionieren. Das eine ist ein Cluster von workstations und das andere ist ein fettes linux cluster.
Entwicklungssystem ist gentoo, cluster ist suse xy.
Wie greifst du auf die Ordner zu wirklich nur ein einfacher Link oder Freigaben ?
Die folderstruktur des projekts soll kopiert sein, nur die files sind verlinkt, und zwar immer auf die entwicklungs-version.
Laufen die System gleichzeitig oder mal das eine und dann das andere ?
Eigentlich immer getrennt voneinander. Wuerde ich fuer beide systeme auf dem gleichen code arbeiten bekomme ich probleme mit den jeweils erstellten object files.
PythonPath setzen - hast du verschiedene Python versionen?
oder wozu brauchst du den ?
Ich muss immer auf meine libraries zeigen koennen.
Dachte wenn ich den zusaetzlich Systemabhaengig setze legt python die object files immer neben den jeweiligen link zu der original file.
Noch was unklar?
Soll ueberall funktionieren. Das eine ist ein Cluster von workstations und das andere ist ein fettes linux cluster.
Entwicklungssystem ist gentoo, cluster ist suse xy.
Wie greifst du auf die Ordner zu wirklich nur ein einfacher Link oder Freigaben ?
Die folderstruktur des projekts soll kopiert sein, nur die files sind verlinkt, und zwar immer auf die entwicklungs-version.
Laufen die System gleichzeitig oder mal das eine und dann das andere ?
Eigentlich immer getrennt voneinander. Wuerde ich fuer beide systeme auf dem gleichen code arbeiten bekomme ich probleme mit den jeweils erstellten object files.
PythonPath setzen - hast du verschiedene Python versionen?
oder wozu brauchst du den ?
Ich muss immer auf meine libraries zeigen koennen.
Dachte wenn ich den zusaetzlich Systemabhaengig setze legt python die object files immer neben den jeweiligen link zu der original file.
Noch was unklar?
-
- User
- Beiträge: 110
- Registriert: Freitag 25. Dezember 2009, 03:42
Hi,
also, ich hoffe ich habe das jetzt richtig verstanden:
Du möchtest auf allen Rechnern die Python Skripte haben, allerdings für den Bytecode auf jedem Rechner ein eigenes Verzeichnis.
Hast du deinen Projektverzeichnis schon im Netzwerk, sodass du es an ein lokales binden kannst?
Wenn nein, dann würde ich dafür ersteinmal sorgen... z.B. mit NFS.
Wenn du dann so weit bist, dass dein Verzeichnis z.B. /projekte/xyz auf jedem Rechner z.B. unter /share/xyz verfügbar ist, dann schau dir mal aufs an.
Damit kannst du Verzeichnisse übereinander legen.
Du würdest also auf allen Rechnern 2 neue Verzeichnisse erstellen... z.B:
/projekte/xyz-pyc
/projekte/xyz-exec
Dann überlagerst du /projekte/xyz-exec so, dass es /projekte/xyz als readonly und /projekte/xyz-pyc als readwrite enthält.
Wenn du jetzt in /projekte/xyz-exec dein Programm laufen lässt, werden alle Dateien, die du bearbeitest bzw. anlegst in /projekte/xyz-pyc auftauchen und /projekte/xyz wird sauber bleiben.
Dadurch ist der Bytecode nicht auf der Netzwerkfreigabe vorhanden und du kannst es nach dem gleichen Prinzip auf den anderen Rechnern machen.
Am Ende sollte es dann z.B. so aussehen:
Entwicklungs-Rechner:
/projekte/xyz -> im Netzwerk freigegeben
/projekte/xyz-pyc -> enthält den Bytcode der Ausführung auf deinem Entwicklungs-Rechner
/projekte/xyz-exec -> legt /projekte/xyz-pyc über /projekte/xyz und ist das Verzeichnis in dem das Programm ausgeführt wird.
Rechner1:
/share/xyz -> /projekte/xyz des Entwicklungs-Rechners
/share/xyz-pyc -> enthält den Bytcode
/share/xyz-exec -> legt /share/xyz-pyc über /share/xyz und ist das Verzeichnis in dem das Programm ausgeführt wird.
Rechner2:
/share/xyz -> /projekte/xyz des Entwicklungs-Rechners
/share/xyz-pyc -> enthält den Bytcode
/share/xyz-exec -> legt /share/xyz-pyc über /share/xyz und ist das Verzeichnis in dem das Programm ausgeführt wird.
...usw...
Praktischerweise lässt sich das ganze in die fstab eintragen und somit ein automatisches mounten beim Systemstart erreichen.
War jetzt vielleicht alles ein wenig kompliziert, aber so dürfte das am einfachsten sein, da du keine Symbolischen Links pflegen musst.
Wieso du jetzt aber den Python-Path brauchst ist mir nicht so ganz klar - Du musst doch einfach nur auf allen Rechnern die gleichen Bibliotheken installiert haben und deine eigenen kannst du ja in dem Projektverzeichnis speichern.
Viele Grüße
Maxi
also, ich hoffe ich habe das jetzt richtig verstanden:
Du möchtest auf allen Rechnern die Python Skripte haben, allerdings für den Bytecode auf jedem Rechner ein eigenes Verzeichnis.
Hast du deinen Projektverzeichnis schon im Netzwerk, sodass du es an ein lokales binden kannst?
Wenn nein, dann würde ich dafür ersteinmal sorgen... z.B. mit NFS.
Wenn du dann so weit bist, dass dein Verzeichnis z.B. /projekte/xyz auf jedem Rechner z.B. unter /share/xyz verfügbar ist, dann schau dir mal aufs an.
Damit kannst du Verzeichnisse übereinander legen.
Du würdest also auf allen Rechnern 2 neue Verzeichnisse erstellen... z.B:
/projekte/xyz-pyc
/projekte/xyz-exec
Dann überlagerst du /projekte/xyz-exec so, dass es /projekte/xyz als readonly und /projekte/xyz-pyc als readwrite enthält.
Wenn du jetzt in /projekte/xyz-exec dein Programm laufen lässt, werden alle Dateien, die du bearbeitest bzw. anlegst in /projekte/xyz-pyc auftauchen und /projekte/xyz wird sauber bleiben.
Dadurch ist der Bytecode nicht auf der Netzwerkfreigabe vorhanden und du kannst es nach dem gleichen Prinzip auf den anderen Rechnern machen.
Am Ende sollte es dann z.B. so aussehen:
Entwicklungs-Rechner:
/projekte/xyz -> im Netzwerk freigegeben
/projekte/xyz-pyc -> enthält den Bytcode der Ausführung auf deinem Entwicklungs-Rechner
/projekte/xyz-exec -> legt /projekte/xyz-pyc über /projekte/xyz und ist das Verzeichnis in dem das Programm ausgeführt wird.
Rechner1:
/share/xyz -> /projekte/xyz des Entwicklungs-Rechners
/share/xyz-pyc -> enthält den Bytcode
/share/xyz-exec -> legt /share/xyz-pyc über /share/xyz und ist das Verzeichnis in dem das Programm ausgeführt wird.
Rechner2:
/share/xyz -> /projekte/xyz des Entwicklungs-Rechners
/share/xyz-pyc -> enthält den Bytcode
/share/xyz-exec -> legt /share/xyz-pyc über /share/xyz und ist das Verzeichnis in dem das Programm ausgeführt wird.
...usw...
Praktischerweise lässt sich das ganze in die fstab eintragen und somit ein automatisches mounten beim Systemstart erreichen.
War jetzt vielleicht alles ein wenig kompliziert, aber so dürfte das am einfachsten sein, da du keine Symbolischen Links pflegen musst.
Wieso du jetzt aber den Python-Path brauchst ist mir nicht so ganz klar - Du musst doch einfach nur auf allen Rechnern die gleichen Bibliotheken installiert haben und deine eigenen kannst du ja in dem Projektverzeichnis speichern.
Viele Grüße
Maxi
hi maxi,
danke fuer die antwort!
das problem hast du auf jeden fall richtig verstanden.
nfs ist schon angelegt.
der pythonpath muss systemabhaengig gesetzt sein. da ich nicht admin bin und verteilt rechne muss es so sein. vergesst den pythonpath, der spielt jetzt keine rolle...
aufs waere scheinbar eine loesung,
leider bin ich nicht admin auf den maschinen und folglich kann ich aufs nicht als root installieren...
sonst noch jemand einen vorschlag?
danke fuer die antwort!
das problem hast du auf jeden fall richtig verstanden.
nfs ist schon angelegt.
der pythonpath muss systemabhaengig gesetzt sein. da ich nicht admin bin und verteilt rechne muss es so sein. vergesst den pythonpath, der spielt jetzt keine rolle...
aufs waere scheinbar eine loesung,
leider bin ich nicht admin auf den maschinen und folglich kann ich aufs nicht als root installieren...
sonst noch jemand einen vorschlag?