celementtree selbst übersetzen?

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.
Antworten
ws
User
Beiträge: 65
Registriert: Freitag 16. Juni 2006, 13:19

Hallo,

für eine Applikation habe ich die Elementtree-Lib benutzt. Inzwischen hat sich rausgestellt, dass ich eine bessere Performance brauche, und habe dafür cElementtree erwogen und mir ein entsprechendes Archiv 'runtergeladen. Da ich mit Python2.2 arbeite und das ganze für verschiedene Plattformen brauche, müsste ich die cElementtree-Sourcen selbst übersetzen, also keine fertigen packages benutzen. Gibt's irgendwo eine Anleitung, wie das geht?

Danke im Voraus,

Wolfgang
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Hi ws...

In der Readme gibt es einen Abschnitt "Installation"... was ist an dem denn verkehrt?

BTW:
Der besagt: python setup.py install waere das, was du tun musst. Getestet hab ichs aber nicht... und genutzt dafuer habe ich das "TGZ" von Version 1.0.5.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
ws
User
Beiträge: 65
Registriert: Freitag 16. Juni 2006, 13:19

Hi,

mit dem setup.py kann ich das natürlich in mein Python 'reininstallieren. Was ich aber haben möchte, ist ein Source-Tree, den ich in unser Buildsystem einbauen kann, um die betreffende Library für verschiedene Plattformen bauen zu können, so dass die Libraries dann als Binaries ausgeliefert werden können. Das setup setzt schliesslich eine installierte Build-Umgebung (C-Compiler usw.) voraus, die beim Kunden nicht vorhanden ist. Kurz, ich möchte die Library nicht in jeder Installation mit setup erzeugen müssen, sondern einmal kompilieren und für die verschiedenen Plattformen bereitstellen.

Gruss

Wolfgang
BlackJack

*Ein* Paket mit einer C-Erweiterung für verschiedene Plattformen dürfte nicht gehen. Das Modul muss ja gegen den jeweiligen Interpretierer gelinkt sein. Du kannst höchstens ein Python 2.2 bei Dir installieren und damit dann das Modul übersetzen und auf das System ohne Build-Umgebung kopieren.
ws
User
Beiträge: 65
Registriert: Freitag 16. Juni 2006, 13:19

Hi BlackJack,

ja, pro Plattform bräuchte man natürlich eine Library, das ist schon klar. Was ich eigentlich suchen würde, wäre eine Möglichkeit, die Bibliothek nicht über setup und python, sondern direkt via Makefile zu erstellen. setup.py kompiliert die C-Sourcen ja auch, also müsste es doch auch via make funktionieren, oder?

Aber noch eine andere Frage: ich habe jetzt mal testweise cElementTree mit setup.py bauen lassen. cElementTree.pyd wurde dabei anscheinend auch gebaut und in ein entsprechendes Verzeichnis gelegt, mit dem Hinweis, dass dieses Verzeichnis sich nicht in meinem Python-Suchpfad befindet. Ich habe also mein Python danach gestartet, und

Code: Alles auswählen

import sys
sys.path.append('<Pfad zu cElementTree.pyd>')
import cElementTree
aufgerufen, allerdings kriege ich dann die Meldung:
ImportError: No module named cElementTree
Muss Python noch mehr über die Library wissen, um das Modul zu finden? Ich habe noch ein __init__.py in das entsprechende Verzeichnis gelegt, das hat aber nicht geholfen. Irgendwelche Ideen?

Gruss

Wolfgang
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Übrigens: du musst natürlich das Modul nicht installieren wenn du es kompilieren willst. Du kannst es einfach nur kompilieren indem du ``python setup.py build_ext`` aufrufst. distutils arbeiten in mehreren Stufen, so dass zuerst ``build`` kommt, danach (sofern es C-Erweiterungen gibt) ``build_ext`` und danach ``install`` oder ``bdist_*``. Du kannst also mit ``bdist_wininst`` einen Installer bauen lassen oder mit ``bdist_egg`` ein Egg. Letzteres allerdings nur wenn du die setuptools nutzt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten