Programme unter Linux und Windows (PyNewbee)

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.
saschas
User
Beiträge: 7
Registriert: Donnerstag 31. Mai 2007, 16:57

Programme unter Linux und Windows (PyNewbee)

Beitragvon saschas » Donnerstag 31. Mai 2007, 17:08

Hallo,

bin neu in Python habe aber schon einige Programmiererfahrung (meist Web: PHP, JSP, Servlets, etc).
Wollte für einen Bekannten ein Programm basteln, eine Art Mitarbeiterverwaltung basierend auf sqllite und die als richtiges Programm.
Java ist mir zu Fett, OpenOffice Base ist zu platt und mdb-kram, mdb-kram muss ich nicht mehr haben und Python hat mich schon immer interessiert.
Nun die Fragen:
Kann man so ein Programm schreiben (unter Linux) und dann eine Executable für Windows bauen?? Beim PyInstaller bin ich mir nicht sicher ob es Cross geht. Alle Anleitungen waren immer nur unter Win für Win und Lin für Lin.
Selbst wenn es nciht als executable geht und ich dann auf deren Rechner Python unter Windows installiere, funktionieren die Programme??
Was muss ich beachten??
Bzw. wie sieht es im allgemeinen mit Platformunabhängigkeit der Programme aus und mit der GUI??

Hoffe die Fragen sind nicht zu profan

Lieben Gruss, Sascha
saschas
User
Beiträge: 7
Registriert: Donnerstag 31. Mai 2007, 16:57

Beitragvon saschas » Donnerstag 31. Mai 2007, 17:20

o.k., eine Frage zurückgenommen,

Gui läuft Crossplatform mit wxPythonGTK, also sollte es auch möglich sein Crossplatform Programme zu schreiben.
Worauf muss ich aber in Verbindung mit sqlite achten??

Nochmal Gruss, Sascha
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Beitragvon BlackVivi » Donnerstag 31. Mai 2007, 17:25

saschas hat geschrieben:o.k., eine Frage zurückgenommen,

Gui läuft Crossplatform mit wxPythonGTK, also sollte es auch möglich sein Crossplatform Programme zu schreiben.
Worauf muss ich aber in Verbindung mit sqlite achten??

Nochmal Gruss, Sascha
wxPythonGTK *verwirrt*...

Eigentlich muss man nicht sonderlich bei Python auf die Plattformunabhängigkeit achten. Es ist immer Plattformunabhängig, außer du verwendest halt Bibliotheken oder Funktionen die als Abhängig gekennzeichnet werden. Ansonsten musst du dir höchstens über den Zeichensatz sorgen mach, such einfach nach UTF8 oder sowas in der Art.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Programme unter Linux und Windows (PyNewbee)

Beitragvon Leonidas » Donnerstag 31. Mai 2007, 17:26

Hallo Sascha, willkommen im Forum,

saschas hat geschrieben:Wollte für einen Bekannten ein Programm basteln, eine Art Mitarbeiterverwaltung basierend auf sqllite und die als richtiges Programm.

Das ist sehr praktisch - seit Python 2.5 gehört SQLite zur Stdlib.

saschas hat geschrieben:Kann man so ein Programm schreiben (unter Linux) und dann eine Executable für Windows bauen?? Beim PyInstaller bin ich mir nicht sicher ob es Cross geht. Alle Anleitungen waren immer nur unter Win für Win und Lin für Lin.

So ohne weiteres: nein. Was aber, zumindest in beschränkten Umfang möglich ist: Windows-Python + py2exe in Wine laufen lassen, um 'frozen' Executables zu erstellen. Aber was spricht dagegen auf dem Rechner Python zu installieren? Das ist sehr praktisch, weil du dann jederzeit auch Codeänderungen machen kannst ohne immer weider eine neue Executable machen müssen.

saschas hat geschrieben:Selbst wenn es nciht als executable geht und ich dann auf deren Rechner Python unter Windows installiere, funktionieren die Programme??

Wenn du etwas beim Programmieren aufpasst und keine Dinge benutzt, die nur unter Linux gehen, sollte es kein Problem sein. Ein Tipp ist die Nutzung von ``os.path`` zum bauen von Dateipfaden: diese sind dann unter Windows im DOS-Format und unter Linux im Unix-Format, also so wie es sein sollte.

saschas hat geschrieben:Bzw. wie sieht es im allgemeinen mit Platformunabhängigkeit der Programme aus und mit der GUI??

In der Regel: ziemlich gut. Wenn du eine GUI verwendest, die unter beiden von dir benötigten Platformen zur Verfügung steht (PyGTK, wxPython, PyQt, Tkinter) sollte es kaum ernsthafte Probleme geben.

P.S.: wxPythonGTK gibt es nicht. Es gibt wxWidgets, wxGTK, wxPython, GTK+ und PyGTK, aber nicht alles zusammen und gleichzeitig ;)
Zuletzt geändert von Leonidas am Donnerstag 31. Mai 2007, 17:28, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Donnerstag 31. Mai 2007, 17:27

Ist möglich. Was nicht möglich ist das "Compile once run everywhere". Wenn du eine Exe erstellst, läuft die exe dann nur auf Windows. Unter *nix kannst du mit gutem gewissen den Source ausliefern.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 31. Mai 2007, 17:29

Hallo Sascha!

Willkommen im Python-Forum!

Mit SQLite bist du schon mal nicht schlecht beraten. Das wird ab Python 2.5 sogar nativ, also ohne Zusatzinstallation, unterstützt.

Für die grafische Oberfläche empfehle ich dir wxPython. http://wxpython.org/ Das funktioniert unter Linux wie unter Windows.

Du wirst dein Programm, auch wenn du es unter Linux schreibst, auch einmal unter Windows testen müssen. Du kommst nicht daran vorbei, unter beiden Betriebssystemen zu arbeiten, wenn du ein Programm schreiben möchtest, das unter Linux und Windows gleichermaßen läuft. Es schleichen sich immer ein paar kleine Fehler ein, die man erst merkt, wenn man das Programm mit einem anderen OS testet.

Du kannst unter Linux und unter Windows jeweils mit cx_freeze deine Anwendung so herrichten, dass Python auf dem Zielcomputer nicht installiert weden muss. Die dabei entstehenden Dateien kannst du mit einem Installationsprogram zu einem Setup bündeln.

Allerdings ist Python auf fast allen Linux-Rechnern dieser Welt installiert und kein Schaden, wenn es auch unter Windows installiert wird. ;-)

wxPython muss ebenfalls installiert werden, dass das Programm läuft. Das ist unter Linux, genau wie unter Windows schnell installiert.

Das Einfachste ist immer, Python zu installieren, dann wxPython zu installiern und die Anwendung mit einem Installationsprogramm als reinen Quellcode auszuliefern. Der Aufwand, ein Programm mit allen Abhängigen DLLs usw. in einen Ordner oder sogar in eine einzelne EXE-Datei zu packen ist nur dann begründet, wenn du dein Programm auf vielen, vielen Rechnern dieser Welt installieren (lassen) möchtest. Es ist nämlich gar nicht so einfach, alle Abhängigkeiten raus zu bekommen und zu einer EXE zusammen zu stellen.

Mit einem Installationsprogramm wie z.B. InstallJammer http://www.installjammer.com/ kannst du deinen Code zu einem Installationspaket zusammenpacken. Der Vorteil von InstallJammer ist der, dass du damit Installationspakete für Linux, Windows und Mac erstellen kannst. Auch Einträge ins Startmenü von Windows werden damit automatisch erstellt.

Du musst bei deinem Bekannten einfach nur Python und wxPython installieren. Und danach kannst du dann deine Anwendung installieren. Also: Ja, alles was du machen möchtest ist mit Python möglich.

Schau dir das doch mal an:
- http://www.installjammer.com/
- http://www.python-forum.de/post-63852.html
- http://www.python-forum.de/topic-6298.html
- http://www.python-forum.de/topic-7916.html
- http://www.python-forum.de/topic-5726.html

mfg
Gerold
:-)

Edit:
Was soll denn das? Haben wir alle gleichzeitig geantwortet? :mrgreen:
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
saschas
User
Beiträge: 7
Registriert: Donnerstag 31. Mai 2007, 16:57

Beitragvon saschas » Donnerstag 31. Mai 2007, 19:18

Wow, geht das schnell hier.

Tausend Dank für die vielen Antworten. Werde mcih in alles einlesen und wohl ode3r überl doch noch mal mein Windoes installieren müssen (wenn ich meinen key noch irgendwo finde ) :oops:
Ansonsten habe ich mir gerade schonmal Dabo besorgt und teste erst einwenig mit IDE's rum.

Nochmal Dank für die Antworten, Gruss, Sascha
saschas
User
Beiträge: 7
Registriert: Donnerstag 31. Mai 2007, 16:57

Beitragvon saschas » Samstag 2. Juni 2007, 19:48

Dabo sieht ja schonmal ganz nett aus, bekomme connect zu ner sqlite3 und obwohl noch nicht fertig funzt es bisher ganz gut.

Habt Ihr vielleicht nocht Tipps und Links zu einer Open Mitarbeiterverwaltung in Python??
Oder mehr links zu Dabo tutorials oder gibts noch anderen Desktop App Frameworks??

Die Mitarbeiterverwaltung soll nicht nur die Mitarbeiterdaten aufnehmen, sondern auch Anwesenheiten kontrollieren. Hierfür soll ein Usermanagment angelegt werden für die Authentifiziernung. User A darf nur Button 1 - 2 - 4 bedienen, User B darf einpflegen und Admin darf alles.
Idee ist es das Tool erstmal local anwendbar zu machen um dann die DB bei Bedarf in eine MySQL / PgSQL umzuwandeln für den Netzbetrieb

PS: NEIN, das Tool wird nicht käuflich zu erwerben sein.
JA, wenn Interesse besteht und es mal fertig ist gehts GPL raus.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Samstag 2. Juni 2007, 23:18

Warum nicht Webbasiert? Das ist doch jetzt so trendy ;)
saschas
User
Beiträge: 7
Registriert: Donnerstag 31. Mai 2007, 16:57

Beitragvon saschas » Sonntag 3. Juni 2007, 00:47

Webbasiert mach ich jeden Tag.
Richtiges OO habe ich somit fast verlernt.
Python wollte ich schon immer mal was mit machen und mein Bekannter für den die Software sein soll hat keinen Server und ein XP zu 'nem Server umzubauen ist an sich schon ein Verbrechen. Ihm dann aber noch was mit Apache und MySql unterzu jubeln und dauerd da hin zu gurken wenn es Probleme gibt ------- och nö.
Es gibt Sachen die eigenen sich als webapps und andere nicht. Man sollte wissen was, wann, wo Sinnvoll ist.
Wenn, wie es geplant ist, es eine schöne Gui gibt, habe ich was dazu gewonnen (Pythonknowledge) und er, weil er alles wie immer klicken kann. Ausserdem soll sie ja in erster Linie local laufen und nur für ca. 300 Mitarbeiter sein, da reicht sqlite.

Lieben Gruss aus den Ardennen, Sascha
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Beitragvon thelittlebug » Sonntag 3. Juni 2007, 01:12

Hi du :)

saschas hat geschrieben:Webbasiert mach ich jeden Tag.
Richtiges OO habe ich somit fast verlernt.

Auch im Web darf OO verwendet werden.

saschas hat geschrieben:Python wollte ich schon immer mal was mit machen und mein Bekannter für den die Software sein soll hat keinen Server und ein XP zu 'nem Server umzubauen ist an sich schon ein Verbrechen. Ihm dann aber noch was mit Apache und MySql unterzu jubeln und dauerd da hin zu gurken wenn es Probleme gibt ------- och nö.

hmm, du brauchst weder Apache noch MySQL um Webanwendungen mit Python zu erstellen.

saschas hat geschrieben:Es gibt Sachen die eigenen sich als webapps und andere nicht. Man sollte wissen was, wann, wo Sinnvoll ist.
Wenn, wie es geplant ist, es eine schöne Gui gibt, habe ich was dazu gewonnen (Pythonknowledge) und er, weil er alles wie immer klicken kann. Ausserdem soll sie ja in erster Linie local laufen und nur für ca. 300 Mitarbeiter sein, da reicht sqlite.
Lieben Gruss aus den Ardennen, Sascha

EXTJS sei empfohlen, eine GUI für JS, ziemlich gut wie ich meine. http://extjs.com

lgherby

edit:
saschas hat geschrieben:Ihm dann aber noch was mit Apache und MySql unterzu jubeln und dauerd da hin zu gurken wenn es Probleme gibt ------- och nö.

Ich liebe Fernwartung. Sogar WinXP kann das von Hausaus (rdp)
saschas
User
Beiträge: 7
Registriert: Donnerstag 31. Mai 2007, 16:57

Beitragvon saschas » Sonntag 3. Juni 2007, 11:28

thelittlebug hat geschrieben:Hi du :)

saschas hat geschrieben:Webbasiert mach ich jeden Tag.
Richtiges OO habe ich somit fast verlernt.

Auch im Web darf OO verwendet werden.

Haste recht!

thelittlebug hat geschrieben:
saschas hat geschrieben:Python wollte ich schon immer mal was mit machen und mein Bekannter für den die Software sein soll hat keinen Server und ein XP zu 'nem Server umzubauen ist an sich schon ein Verbrechen. Ihm dann aber noch was mit Apache und MySql unterzu jubeln und dauerd da hin zu gurken wenn es Probleme gibt ------- och nö.

hmm, du brauchst weder Apache noch MySQL um Webanwendungen mit Python zu erstellen.

Aber irgendeinen Server werde ich wohl brauchen, ob Apache für PHP, Zope oder den BaseHTTPServer.

thelittlebug hat geschrieben:
saschas hat geschrieben:Es gibt Sachen die eigenen sich als webapps und andere nicht. Man sollte wissen was, wann, wo Sinnvoll ist.
Wenn, wie es geplant ist, es eine schöne Gui gibt, habe ich was dazu gewonnen (Pythonknowledge) und er, weil er alles wie immer klicken kann. Ausserdem soll sie ja in erster Linie local laufen und nur für ca. 300 Mitarbeiter sein, da reicht sqlite.
Lieben Gruss aus den Ardennen, Sascha

EXTJS sei empfohlen, eine GUI für JS, ziemlich gut wie ich meine. http://extjs.com

lgherby

Kannte ich noch nicht, Cooler Tipp, Danke

thelittlebug hat geschrieben:
saschas hat geschrieben:Ihm dann aber noch was mit Apache und MySql unterzu jubeln und dauerd da hin zu gurken wenn es Probleme gibt ------- och nö.

Ich liebe Fernwartung. Sogar WinXP kann das von Hausaus (rdp)

Ich nicht, ich habe es lieber, wenn die Dinger einmal laufen und dann richtig.

Lieben Gruss aus den Ardennen, Sascha
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Beitragvon thelittlebug » Sonntag 3. Juni 2007, 12:51

Nur um ein wenig zu erklären :)
Ich wanke auch oft zw. "echtem" Interface und einem Webinterface. Mom. schaue ich mir gerade pyGTK an das auch Plattformunabhängigkeit bietet.

Allerdings bin ich mir noch nicht ganz sicher welcher Ansatz für mich nun weniger Arbeit und mehr Vorteile bietet.
1. EXTJS + Framework (z.b. Pylons), bietet teilweise fast echte GUI Funktionalität. Um Daten zu be/verarbeiten wird es hier sicher fast keinen Unterschied zu einem "echten" GUI machen. Ein Webbasierter Photoshop wird damit schwierig ;) Teilweise ist der Aufwand schon höher als bei einem echten GUI.
2. Echtes GUI, z.b. PyGTK, schneller, ich vermute auch weniger Arbeit als mit einem JS GUI. Auch Grafik ist hier kein Problem. Aber spätestens wenn aus dem Teil eine Multiuser Anwendung wird wird man einige Zeilen Code die man sich Anfangs gespart hat nachrüsten dürfen ( Transaktionen z.b. ).

Kommt immer drauf an was man erreichen möchte :)
Ich schätze aber schon das ein echtes GUI deinen Anforderungen näher kommen wird als EXTJS.

Zum Thema Fernwartung: natürlich ist es schön wenn alles läuft, aber, wie oft wurde ich schon angerufen weil irgendwo irgendwas von irgendjemanden irgendwann nicht gefunden wurde :D Da setzt ich mich lieber zum Rechner, bau ne Verbindung auf, setz seine Schriftfarbe in Word wieder auf Schwarz und verrechne 30 Minuten Arbeit anstatt mit dem 90 Minuten zu telefonieren.
Man darf mich nicht falsch verstehen, auch der Kunde würde 90 Minuten verlieren ;)

lgherby
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Sonntag 3. Juni 2007, 14:54

Webanwendungen eignen sich meiner Meinung nach vor allem für Multiuser Anwendungen. Wenn da 300 Mitarbeiter ihre Arbeitszeit damit erfassen dann hab ich das viel lieber Zentral als auf 300 verschiedenen Desktops. Wenns nur an einem PC in der Personal Abteilung verwendet wird ist eine Traditionelle Desktop Applikation vermutlich überlegen ;)
saschas
User
Beiträge: 7
Registriert: Donnerstag 31. Mai 2007, 16:57

Beitragvon saschas » Sonntag 3. Juni 2007, 15:19

NeNe, Stundenzettel gibts schon online.
Es sollen sich nur 3-5 Mann einloggen können. Es gebt um die Ermittlung von Fehlzeiten.
1ter Teil ist also die Mitarbeiterverwaltung als reine Einpflege der Mitarbeiter (mit Foto, hoffe das kriege ich hin) mit ausgegebenen Utensilien auf einem Computer.
2ter Teil ist ein Programm, bei dem sich die Mitarbeiter bei einem Event mittels Ihrer MitarbeiterId ein und auschecken (eventuell später mal mit Barcodescanner aber soweit bin ich noch lange nicht). Dadurch lässet sich dann pro Event ermitteln, welche der eingetragenen Mitarbeiter wirklich erschienen sind und wann, bzw. ob jemand kronisch später kommt und dafür früher geht.
Dies kann man als ein Programm schreiben mit Login, damit nicht irgendwer versucht Mitarbeiterdaten zu ändern. Oder als 2, einmal die Mitarbeiterverwaltung und einmal de Eventverwaltung, wobei man dann irgendwie die Datenbanken synchronisieren muss, bzw einen Austausch der Mitarbeiterdaten ermöglichen muss. Vorteil von Option 2. man könnte die Eventverwaltung auf mehrere Rechner, bei vielen gleichzeitigen Events installieren.
Einsatzbereich wären dann Securityfirmen, Hostessenservice und alle anderen Bereiche wo man viel mit Nebenjobblern zu tuen hat.

PS. ich glaube wir schweifen vom o.g. Thema ab. Ist vielleicht ein neuer Thread.

Gruss aus den Ardennen, Sascha

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder