Installieren von "externen" Packages?

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.
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Installieren von "externen" Packages?

Beitragvon Fallen][Angel » Montag 27. Oktober 2008, 16:16

Moin,

ich hoffe, dass ich nicht schon mit der Überschrift voll daneben gegriffen habe. Da meine erste Projektvorstellung nun ja geplatzt ist (Erstes Projekt: "Validator" für CSS, HTML, etc.) bin ich nun auf der Suche nach etwas einfacherem.

Möchte nun gerne aus einer Datenbank eine .ics Datei erstellen - denke das sollte machbar sein. Daher hab ich mich einmal bzgl. MySQL und Python beschäftig und leider festgestellt, dass Python MySQL selbst nicht kann.

Nach etwas googlen bin ich dann auf folgendes gestoßen: http://sourceforge.net/projects/mysql-python

Nun habe ich, auch schon bei anderen Projekten, gesehen, dass man diese Packages (?) immer über python install, etc. erstmal installieren muss. Bislang konnte ich dies noch nie aktiv selbst machen, aber mich würde interessieren, ob sich dieses Packages dann ins Python Verzeichnis installieren oder was dann passiert?

Muss diese Prozess dann auf jedem System durchgeführt werden, wo das Script laufen soll oder entsteht dann ein Ordner, welchen ich einfach kopieren kann.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Beitragvon nemomuk » Montag 27. Oktober 2008, 16:22

du musst das auf jedem Rechner installieren (oder in irgendeiner Form mitliefern), auf dem das Skript genutzt werden soll, sonst kann man das Modul ja gar nicht importieren, weil es nicht existiert. Einfach installieren - für Windows ist ja schon eine EXE da und bei Linux wahrscheinlich per "python setup.py install"...
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Beitragvon Fallen][Angel » Montag 27. Oktober 2008, 16:42

Ja, die angesprochenen Dateien sind da.

Kann man bei der Installation aber irgendwie beeinflussen, ob man dieses Packages dann ohne weiterere Installationen einfach auf andere Rechner kopieren kann?

Oder liegt das nur in der Hand des Packages?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Installieren von "externen" Packages?

Beitragvon Leonidas » Montag 27. Oktober 2008, 19:46

Fallen][Angel hat geschrieben:Möchte nun gerne aus einer Datenbank eine .ics Datei erstellen - denke das sollte machbar sein. Daher hab ich mich einmal bzgl. MySQL und Python beschäftig und leider festgestellt, dass Python MySQL selbst nicht kann.

OH MEIN GOTT, PYTHON KANN KEIN MYSQL! Oh ich seh grad, es kann auch kein DB2, Oracle, Postgres, Firebird! Da hab' ich wohl auf die falsche Sprache gesetzt!

Und PHP unterstützt kein JSON, so what?

Nein, mal im ernst: warum sollte Python Module für den Zugriff auf MySQL mitbringen? Es hat doch schon RDMBS dabei, SQLite.

Achja, und SCNR, sonst fassen einige Leute das falsch auf.

Fallen][Angel hat geschrieben:Nun habe ich, auch schon bei anderen Projekten, gesehen, dass man diese Packages (?) immer über python install, etc. erstmal installieren muss.

Nein, nicht immer. Die meisten Distributoren bieten das MySQLdb-Modul in ihren Paket-Repositories an.

Fallen][Angel hat geschrieben:Bislang konnte ich dies noch nie aktiv selbst machen, aber mich würde interessieren, ob sich dieses Packages dann ins Python Verzeichnis installieren oder was dann passiert?

Wo? Bei ``easy_install MySQLdb``? Bei ``python setup.py install``? Module werden üblicherweise in ``site-packages`` installiert, aber du kannst konfigurieren wo das Zeug landen soll, wenn du es nicht systemweit haben willst.

Fallen][Angel hat geschrieben:Muss diese Prozess dann auf jedem System durchgeführt werden, wo das Script laufen soll oder entsteht dann ein Ordner, welchen ich einfach kopieren kann.

Verschieden. Hängt von einigen Faktoren ab.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Beitragvon Fallen][Angel » Montag 27. Oktober 2008, 20:13

Es sollte keine Kritik an Python sein und kein Pluspunkt für PHP. PHP kann auch kein MySQL von Haus aus, jedoch hätte ich Python das zugetraut.

Der Grund weswegen ich frage: Ich möchte nun ja endlich mal effektiv mit Python anfangen und nicht nur lesen. Jedoch springe ich teilweise zwischen drei Rechnern hin und her. Wenn das Projekt fertig ist, dann wird es auf einem viertem PC laufen, d.h. ich müsste auf vier PCs immer diese Erweiterung (oder irgendwelche anderen) installieren.

Ist so ein leichter Beigeschmack, daher zielte meine Frage halt darauf ab, ob man diese Installationen auch so durchführen kann, dann ich das Package am Ende per copy & paste einfach mitschleifen kann.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 27. Oktober 2008, 20:49

Fallen][Angel hat geschrieben:Es sollte keine Kritik an Python sein und kein Pluspunkt für PHP. PHP kann auch kein MySQL von Haus aus, jedoch hätte ich Python das zugetraut.

Für Python ist nun mal MySQL nicht halb oder ein drittel so wichtig wie für PHP. Die Anzahl von PHP-Applikationen die MySQL nutzen liegen schätzungsweise bei 90%, in Python sind das vielleicht mal 10%, die aber noch mit PostgreSQL geteilt werden (in der Python-Welt ist Postgres präsenter als in PHP).

Fallen][Angel hat geschrieben:Ist so ein leichter Beigeschmack, daher zielte meine Frage halt darauf ab, ob man diese Installationen auch so durchführen kann, dann ich das Package am Ende per copy & paste einfach mitschleifen kann.

Hängt vom Paket ab. Wenn das Paket nur aus Python-Code besteht (der optimalerweise nicht von irgendwelchen C-Libraries abhängt) ist das kein Problem. Schwieriger wird es wenn da Teile kompiliert werden müssen. Das ist dann solange kein Problem, solange deine verschiedenen Rechner den gleichen Binärcode ausführen. Zwischen Windows und Linux würde es wohl auch gehen, da C-Module für Python unter Windows so weit ich mich erinnere .dll nutzen und Unix-Binaries .so. Nicht möglich wird das erst, wenn du zwischen verschiedenen Unices welchselst, denn da wird immer bei C-Module auf die .so-Dateien zugegriffen und ein 64-Bit Solaris kann keine Module die unter 32-Bit FreeBSD laufen starten, ebensowenig wie ein amd64 Linux keine .so-Dateien von NetBSD auf PPC laufen lassen kann.
Also du siehst: es hängt ab.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Beitragvon Fallen][Angel » Montag 27. Oktober 2008, 22:00

Leonidas hat geschrieben:
Fallen][Angel hat geschrieben:Es sollte keine Kritik an Python sein und kein Pluspunkt für PHP. PHP kann auch kein MySQL von Haus aus, jedoch hätte ich Python das zugetraut.

Für Python ist nun mal MySQL nicht halb oder ein drittel so wichtig wie für PHP. Die Anzahl von PHP-Applikationen die MySQL nutzen liegen schätzungsweise bei 90%, in Python sind das vielleicht mal 10%, die aber noch mit PostgreSQL geteilt werden (in der Python-Welt ist Postgres präsenter als in PHP).


Kann ich nachvollziehen, da PHP natürlich eher eine internetlastige Sprache ist. Python ist da breiter verteilt aber was machen bei Python die restlichen 90% aus? Nur aus interesse. Weil kann ja nicht nur SQLite sein

bzgl Packages: Okay, unterschiedliche Systeme, unterschiedliche Libraries. Aber dann muss ich mich scheinbar damit anfreunden. Find ich zwar bissl schade aber lässt sich halt nicht vermeiden ;)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 27. Oktober 2008, 22:31

Fallen][Angel hat geschrieben:Kann ich nachvollziehen, da PHP natürlich eher eine internetlastige Sprache ist. Python ist da breiter verteilt aber was machen bei Python die restlichen 90% aus? Nur aus interesse. Weil kann ja nicht nur SQLite sein

Nicht jede Applikation muss Daten speichern können, da gehen schon mal einige Prozent weg für Wrapper und Glue-Code der Tools miteinander verbindet. Dann gibt es Programme bei denen es reicht Konfigurationsdateien zu schreiben, diese sind oft im INI-Format. Strukturierte Daten werden oft auch in XML ausgegeben, Objekte kann man in Python viel einfacher auch mit pickle serialisieren. Somit schätze ich mal, dass ein großer Teil Python-Applikationen ohne große Standalone-RDBMS wie MySQL oder Postgres auskommen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Beitragvon Fallen][Angel » Dienstag 28. Oktober 2008, 00:07

Wenn ich dann in Zukunft mal ein Projekt habe, wo ich Daten nicht zentral auf einem PC speichern möchte sondern global irgendwo auf einen Server. Welche Strukturen würden sich dafür anbieten?

Würde nun wieder auf einen ganz normalen Datenbankserver tippen.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 28. Oktober 2008, 01:41

Fallen][Angel hat geschrieben:Wenn ich dann in Zukunft mal ein Projekt habe, wo ich Daten nicht zentral auf einem PC speichern möchte sondern global irgendwo auf einen Server. Welche Strukturen würden sich dafür anbieten?

So ziemlich jede die ich angesprochen habe. Es hängt von der Struktur deiner Daten ab. Oft sind Datenbanken eine brauchbare Wahl (oft reicht schon SQLite! Ich glaube auch viele PHP-Seiten würden mit SQLite auskommen), manchmal sind sie aber zu groß, zu umständlich oder zu problemfern.

Nehmen wir mal einen Forumspost. Da könnte man ein RDBMS nehmen, es ist ein Post mit Relationen zum Autor, zum Thread, zur Signatur des Autors, enthält Text und einige Einstellungen.

Nehmen wir nun eine Baumstruktur mit tausenden von Nodes. Klar, kann man als Textfeld abspeichern, aber zum durchsuchen oder schnellen zugriff kann man das vergessen. Da vielleicht lieber etwas hierarchisches, wie vielleicht XML oder eine XML-basierte Datenbank?

Nehmen wir Bilder. Natürlich könnte man sie als Attribut in einem XML-Node absetzen oder als BLOB in der Datenbank. Aber dann verliert man die Möglichkeit mit einfachen Tools darauf zuzugreifen und sie zu bearbeiten. Da ist es wohl besser sie im Dateisystem zu verstauen.

Fallen][Angel hat geschrieben:Würde nun wieder auf einen ganz normalen Datenbankserver tippen.

Wenn ein Hammer dein Werkzeug ist, dann sehen alle deine Probleme aus wie Nägel. ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Beitragvon Fallen][Angel » Dienstag 28. Oktober 2008, 09:44

Danke für deine Antworten :)

Frage deshalb so viel (und teilweise auch offensichtliches), da diese Gelände für mich komplett neu ist. Ich bin (leider) in einer reinen PHP Welt aufgewachsen und dort ist MySQL gang und gebe.

Da hat man hin und wieder mal ne .ini zur Konfiguration verwendet, SQLite schonmal kaum und XML eigentlich auch nur in speziellen Fällen.

Muss mich langsam daran tasten, da man nun nach etwas Zeit schon merkt, dass Python mehr vom System abhängt als es z.B. PHP getan hat bzw. tut.
BlackJack

Beitragvon BlackJack » Dienstag 28. Oktober 2008, 10:55

@Fallen][Angel: Python ist halt eine "allgemeine" Programmiersprache womit man fast alles programmieren kann. Und bei den "allgemeinen" Programmen benutzen ja auch nur relativ wenige eine Server-Datenbank zum Speichern ihrer Daten.

Neben relationalen Datenbanken kann man noch Objektdatenbanken wie ZODB oder Durus verwenden.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], martinjo