CPython zur Python Erweiterung oder Standard - Interpreter?

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
Gast

Es geht um die möglichen Erweiterungsformen von Python. Was Jython darstellt und wie es arbeitet ist mir durch Online - Recherche klar geworden. Allerding sind dort die Quellen zu CPython dürftig und meiner Meinung auch wiedersprüchlich.
Zum einen steht da, dass cPython ein in C geschriebener Compiler, welcher auf jedem System einsetzbar ist, auf dem zumindest ein C - Compiler zur Verfügung steht. Und es wird dabei so geschrieben, als wäre cPython ein Zustatz um Python mittels C - Modulen zu erweitern.
Dennoch steht auf vielen anderen Seiten, dass der Standard - Python - Interpreter cPython sein soll. Das stellt für mich nun diesen Wiederspruch dar. Denn wenn es der Standard - Interpreter sein soll, ist doch nichts besonderes dran, oder?!
Also meine Frage nun: Wie kann Python mittels C erweitert werden?
Mit C - Modulen, die einfach importiert werden? Ist dabei was zu beachten?
Benötigt man doch einen besonderen Compiler, wie Jython einer ist?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ui, ich glaube hier liegt ein Mißverständnis vor: CPython wird manchmal von JPython / Jython-Leuten zur Abgrenzung verwendet.

Du stellst so viele Fragen, die kann man gar nicht alle umfassen in einem Post beantworten. Deshalb kurz:
- CPython = Python; Python ist in C geschrieben. Deshalb braucht man einen C-Compiler, wenn man Python nutzen will. (Es sei denn, man installiert, z.B. auf Windows, ein sog. Binary, also "Python als Programm" gewissermaßen.)
- Python ist KEIN Compiler
- Jython ebenfalls nicht! Jython ist (im wesentlichen) in Java geschrieben anstelle von C.
- Wie man Python mit C erweitert? Oh, am besten schaue Dir mal die Anleitung dazu an. Aber Du solltest C und Python schon einigermaßen beherrschen, bevor Du Dich daran wagst ;-). Es gibt auch noch eine Reihe andere Anleitungen in div. Pythonbüchern - aber Deutsche Anleitungen sind mir nicht bekannt, vielleicht hat ja jemand eine Quelle?

Gruß,
Christian
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi CPython heißt deswegen so, weil hier der Python-Interpreter in C geschrieben ist. Bei Jython (oder besser JPython) ist der Interpreter in Java geschrieben und deswegen um einiges langsamer. Aus diesem Grund ist CPython meines Wissens die Standartimplementierung, die du auch unter www.python.org rumterladen kannst.

Das man Python jedoch mit C-Modulen erweitern kann ist eine andere Sache, dazu musst du die Module auf eine spezielle Form wrappen, sodass der Interpreter darauf zugreifen kann und diese in gültige "Pythonobjekte" umwandeln kann. Deswegen brauchst du entweder einiges an Wissen, wie du genau die Module selber wrappst oder du schreibst dir einfach deine C-Module und lässt sie von Programmen wie SWIG wrappen. Da ich aber meist unter Win arbeite und da C nicht gerade oft gebraucht wird, bzw. Stiefbrüderlich behandelt wird hab ich damit keine große Erfahrung --> frag am besten mal einen unserer Linux-Gurus :wink:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Milan hat geschrieben:Jython (oder besser JPython)
Naja, das darf afaik aber nicht mehr JPython heißen, wegen Streitereien mit dem CNRI.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

vielen Dank, dass ihr mich aus meinem Mißglauben befreit habt :)
BlackJack

Drei Anmerkungen: "CPython = Python" kann man so nicht stehen lassen weil auch "Jython = Python" stimmt. Python ist eine Beschreibung einer Programmiersprache. Und der in C geschriebene Python-Interpreter, den es bei http://www.python.org/ gibt, wird auch CPython genannt.

Das zweite betrifft Jython. Es ist ein Compiler -- man kann damit Python Quelltext in Java-Bytecode übersetzen. Das ist nicht nur Code für einen virtuellen Prozessor -- es gibt auch richtige Prozessoren dafür.

Der Satz mit dem "in Java geschrieben und deswegen um einiges langsamer" ist ganz schön hart. Java-Bytecode wird von den aktuellen VMs in nativen Maschinencode übersetzt. Java hat sowas wie Psyco also schon standardmässig eingebaut.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Drei Anmerkungen: "CPython = Python" kann man so nicht stehen lassen weil auch "Jython = Python" stimmt. Python ist eine Beschreibung einer Programmiersprache. Und der in C geschriebene Python-Interpreter, den es bei http://www.python.org/ gibt, wird auch CPython genannt.
Man kann aber sagen, dass CPython die Python Referenzimplementierung ist.
BlackJack hat geschrieben:Das zweite betrifft Jython. Es ist ein Compiler -- man kann damit Python Quelltext in Java-Bytecode übersetzen. Das ist nicht nur Code für einen virtuellen Prozessor -- es gibt auch richtige Prozessoren dafür.
Gleiches gilt auch für IronPython.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten