Bin mal wieder auf IronPython aufmerksam geworden und steig nicht so ganz dahinter, was das Ziel dabei ist
Mono ist ja plattformunabhängig und sowohl für Windows, Linux, BSD, Mac OS X, Solaris und einige andere Unixe verfügbar. Mit IronPython kann ich wohl normalen Python-Code schreiben und in Mono benutzen/ausführen.
Mal abgesehen davon, dass IronPython auf .NET Komponenten zugreifen kann und umgekehrt… Kann Mono aus meinem Python-Code ein betriebssystemspezifisches Binary plus Bibliotheken erzeugen -> also compilieren <- ähnlich zu py2exe? Nur eben unter allen von Mono unterstützten Plattformen?
Oder nutzt Mono auch sowas wie eine Virtual Machine, also eine Art Interpreter bzw. JIT-Compiler und muss dann auf jedem Zielgerät installiert sein, um meine IronPython-Anwendung auszuführen?
IronPython und Mono im Vergleich zu py2exe
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Mono macht .NET "binaries". Bytecode mit exe ähmlichem Header. py2exe macht .pyc Dateien, bytecode ohne Header. Und warum hab ich immer die Probleme mit exe Dateien nicht?
Jetzt mal ganz allgemein gefragt, warum kann man den Sourcecode nicht mitliefern?
Jetzt mal ganz allgemein gefragt, warum kann man den Sourcecode nicht mitliefern?
TUFKAB – the user formerly known as blackbird
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo droptix!droptix hat geschrieben:Oder nutzt Mono auch sowas wie eine Virtual Machine, also eine Art Interpreter bzw. JIT-Compiler und muss dann auf jedem Zielgerät installiert sein, um meine IronPython-Anwendung auszuführen?
Grob gesagt:
Um ein .NET-Programm unter Windows ausführen zu könne, muss .NET installiert werden. Um ein .NET-Programm unter Linux ausführen zu könne, muss MONO installiert sein.
Wenn du .NET-/MONO-Programme unter beiden Plattformen ausführen willst, dann musst du schon beim Programmieren darauf achten, nur diese .NET-/MONO-Komponenten zu verwenden, die in beiden Systemen implementiert sind.
.NET-Programme brauchen also auf jeden Fall ein
[ich glaube mein computer stürzt gleich ab -- zwischenspeichern]
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Was ist ein .exe-ähnlicher Header und was macht das aus?blackbird hat geschrieben:Mono macht .NET "binaries". Bytecode mit exe ähmlichem Header. py2exe macht .pyc Dateien, bytecode ohne Header. Und warum hab ich immer die Probleme mit exe Dateien nicht?
py2exe macht .exe Dateien -> und dort drin steckt dann die reine .pyc Datei, verlinkt mit dem Python-Interpreter plus Module?
Es geht mir nicht um Quellcode-Schutz, sondern darum, keine Python-Installation beim Anwender auf dem Zielgerät vorauszusetzen. Meine Python-Applikation als systemspezifisches Binary kann dann einfach gestartet werden, auch wenn sie wegen dem eingebundenen Python-Interpreter etwas größer ist.blackbird hat geschrieben:Jetzt mal ganz allgemein gefragt, warum kann man den Sourcecode nicht mitliefern?
.NET-EXEn sind EXEn mit einem kleinen "nativen" Programm das die .NET-VM startet oder eine Fehlermeldung ausgibt, wenn die nicht installiert ist. Nach diesem kleinen "echten" Programm kommt der Bytecode für die VM in der Datei.
IronPython-Programme brauchen nicht nur die .NET-VM auf dem Zielrechner, sondern auch IronPython.
IronPython-Programme brauchen nicht nur die .NET-VM auf dem Zielrechner, sondern auch IronPython.
Soviel ich weiß gehen IronPython-exes schon ohne IronPython nur mit .Net. Allerdings halt ich IronPython mitlerweile für sinnlos vorallem von der Menthalität der Leute dahinter:
1. Man kann dinge wie Tkinter nicht verwenden sondern soll auf .Net sachen zurückgreifen, allerdings hab ich in der kurzen Zeit in der ich mich mit IronPython beschäftigt hab keine anständige Übersicht über .Net-Bibliotheken gefunden.
2. Man kann PythonCode nicht so kompilieren dass man es aus anderen .Net Sprachen verwenden kann
Also ist IronPython nur gut um .Net-Anwendungen in Python zu schreiben die dann nur mit IronPython gehn. Allerdings will niemand auf ner Linux-Maschine n PythonProgramm mit Mono ausfürhen weils einfach paradox ist. Somit geht die Eigenschaft der Plattformunabhänigkeit verloren und drum macht IronPython für mich keinen Sinn.
Ich find den Ansatz von Jython um längen besser wobei das bei mir mit BeautifulSoup auch noch nicht so recht klappen will, allerdings sobald das geht werd ich meine Sachen in ne .jar packen und so den Winlern geben.
pythonist
1. Man kann dinge wie Tkinter nicht verwenden sondern soll auf .Net sachen zurückgreifen, allerdings hab ich in der kurzen Zeit in der ich mich mit IronPython beschäftigt hab keine anständige Übersicht über .Net-Bibliotheken gefunden.
2. Man kann PythonCode nicht so kompilieren dass man es aus anderen .Net Sprachen verwenden kann
Also ist IronPython nur gut um .Net-Anwendungen in Python zu schreiben die dann nur mit IronPython gehn. Allerdings will niemand auf ner Linux-Maschine n PythonProgramm mit Mono ausfürhen weils einfach paradox ist. Somit geht die Eigenschaft der Plattformunabhänigkeit verloren und drum macht IronPython für mich keinen Sinn.
Ich find den Ansatz von Jython um längen besser wobei das bei mir mit BeautifulSoup auch noch nicht so recht klappen will, allerdings sobald das geht werd ich meine Sachen in ne .jar packen und so den Winlern geben.
pythonist
Man braucht IronPython. Wenn ich die `IronPython.dll` entferne, dann kommt sowas hier:
Code: Alles auswählen
new@s8n2:~$ ./ipytest.exe
** (./ipytest.exe:9021): WARNING **: The following assembly referenced from /home/new/ipytest.exe could not be loaded:
Assembly: IronPython (assemblyref_index=0)
Version: 1.0.2467.24713
Public Key: (none)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!gerold hat geschrieben:[ich glaube mein computer stürzt gleich ab -- zwischenspeichern]
Ich bin wieder zurück. Jetzt sollte alles wieder korrekt funktionieren.
Wie ich sehe, hat sich eh schon alles geklärt. Dann brauche ich nichts mehr schreiben.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Öh, also so schwer kann es doch nicht sein, den entsprechenden Startmenü-Knopf zu drücken. Zumindest zu meiner Windows-Zeit gabs nach der Installation des .NET-SDK ein schönen Startmenü-Knopf ".NET-Framework Dokumentation".pythonist hat geschrieben:Soviel ich weiß gehen IronPython-exes schon ohne IronPython nur mit .Net. Allerdings halt ich IronPython mitlerweile für sinnlos vorallem von der Menthalität der Leute dahinter:
1. Man kann dinge wie Tkinter nicht verwenden sondern soll auf .Net sachen zurückgreifen, allerdings hab ich in der kurzen Zeit in der ich mich mit IronPython beschäftigt hab keine anständige Übersicht über .Net-Bibliotheken gefunden.
Alternativ sucht man eben online in der Mono-Dokumentation oder in der MSDN Library. Man kann Microsoft ja viel vorwerfen, mangelnde Dokumentation allerdings nicht!
Btw, Tkinter sieht unter Linux sowieso beschissen aus, außerdem gibt es seit langem Gtk# und Qt#!
Das kann nicht sein! IronPython compiliert Python-Code in IL, und das ist per Definition aus jeder anderen .NET-Programmiersprache benutzbar.2. Man kann PythonCode nicht so kompilieren dass man es aus anderen .Net Sprachen verwenden kann
Inter können IL-Methoden und Funktionen zwar nicht-IL ausführen, das Interface allerdings ist immer sprachunabhängig (ansonsten ist das Ganze kein .NET-Code)
Wieso? Der Nutzer weiß doch in der Regel gar nicht, welche Sprache hinter einer .NET Anwendung steht. Das ist ja irgendwie auch der ganze Sinn von .NETAllerdings will niemand auf ner Linux-Maschine n PythonProgramm mit Mono ausfürhen weils einfach paradox ist.
Wenn man sich erstmal an .exe Dateien auf Linux-Systemen gewöhnt hat, ist Mono recht akzeptabel.
Abgesehen von der Tatsache, dass Jython stable ist und auf die JVM abzielt, sehe ich genau keinen Unterschied zwischen IronPython und Jython. Die dahinter stehende Idee und das Design sind sich verdammt ähnlich.Ich find den Ansatz von Jython um längen besser
Sofern sich da in letzter Zeit nichts geändert hat, kann man Python-Code nicht von anderen .NET Sprachen aus benutzen, jedenfalls nicht so, dass Python-Objekte den anderen Sprachen so einfach als Objekte zur Verfügung stehen. Die erwarten nämlich mehr oder weniger statische Klassen.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Afair soll das DLR lösen.BlackJack hat geschrieben:Sofern sich da in letzter Zeit nichts geändert hat, kann man Python-Code nicht von anderen .NET Sprachen aus benutzen, jedenfalls nicht so, dass Python-Objekte den anderen Sprachen so einfach als Objekte zur Verfügung stehen. Die erwarten nämlich mehr oder weniger statische Klassen.
TUFKAB – the user formerly known as blackbird