eGenix PyRun - eGenix.com Server

Werbung
eGenix PyRun
Python Runtime in einer einzigen 12MB Datei
FrOSCon 2012
Sankt Augustin
Marc-André Lemburg
EGENIX.COM Software GmbH
Langenfeld, Germany
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Marc-André Lemburg
• Geschäftsführer der eGenix.com GmbH
– Mehr als 20 Jahre IT-Erfahrung
– Diplom in Mathematik
– Experte in Python, Application Design, Web Techniken,
Datenbanken, Unicode
– Python Core Developer (seit 1997)
– Python Software Foundation Vorstandsmitglied (2002-2004, seit 2010)
– EMail: [email protected]
• eGenix.com Software GmbH, Germany
– Gründung in 2000
– Kernbereiche:
• Kundenprojekte: Schwerpunkte Python und Datenbanken
• Produkte: Python mx Extensions für Python/Plone/Zope/Django
(mxODBC, mxDateTime, mxTextTools, etc.)
– Internationaler Kundenstamm
2
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Agenda
1.
Einleitung
2.
Anwendungsfälle (Use Cases)
3.
Technische Details
4.
Diskussion
3
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Agenda
1.
Einleitung
2.
Anwendungsfälle (Use Cases)
3.
Technische Details
4.
Diskussion
4
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Motivation
• Einfache Installation ohne Nebeneffekte
• Kleine Dateigröße / kleiner Download
• Sollte leicht in Installer zu integrieren sein
• Erweiterbarkeit:
Muß .py, .pyc Dateien und C Erweiterungen laden können
5
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Projekt
• Python Laufzeit Umgebung in einer einzigen Datei
• Baut auf unserem alten mxCGIPython Projekt auf
(1999-2006)
6
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Unterstützte Plattformen in PyRun 1.0
• Python Versionen: 2.5, 2.6 and 2.7 … noch kein 3.x
• Binaries gibt es für Linux / FreeBSD / Mac OS X
Quellen sollten auf jedem Unix basierten System laufen
• Windows Unterstützung ist angedacht
7
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Agenda
1.
Einleitung
2.
Anwendungsfälle (Use Cases)
3.
Technische Details
4.
Diskussion
8
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Anwendungsfälle (Use Cases)
• Distribution von Programmen und Anwendungen
– eGenix nutzt PyRun im mxODBC Connect Server
• virtualenv Ersatz
• Tests und kleine Skripte
• Anwendungsspezifische Python Installationen
• Embedded Devices
• Viele andere Einsatzmöglichkeiten ...
9
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Ideal für Anwendungen und Skripte
• Lädt ca. doppelt so schnell wie Standard-Python
– Python 2.7: 0.054u 0.014s
– PyRun 2.7: 0.026u 0.014s
• Benötigt nur einen kleinen Teil des Plattenplatzes einer
regulären Python Installation:
–
–
–
–
Python 2.7: ca. 100MB
PyRun 2.7: 12 MB
PyRun 2.7 mit gzexe: 4 MB, aber Startzeit 0.160u 0.054s
PyRun 2.7 mit upx: 3.5 MB, aber Startzeit 0.124u 0.017s
10
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: virtualenv Ersatz (1/3)
• Einfach zu installieren
– PyRun in ein Verzeichnis kopieren – fertig !
optional:
– PyRun Verzeichnisstruktur anlegen
• Und es geht noch einfacher: per install-pyrun Skript
• PyRun benötigt kein Aktivierungsskript (wie virtualenv)
11
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: virtualenv Ersatz (2/3)
• Unabhängig von einer Python Systeminstallation
• Keine Python Installation nötig
• Keine Probleme mit Inkompatibilitäten des System-Python
• Keine Symlinks zu verwalten
• Problemlos im Dateisystem verschiebbar
12
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: virtualenv Ersatz (3/3)
• Klein genug, um mehrere Kopien zu nutzen
• 13MB mit pip, setuptools
– kann Python Code laufen lassen
– kann komplierte C Erweiterungen laden
• 36MB mit pip, setuptools, Include Dateien and Zusatzmodulen
– kann C Erweiterungen übersetzen
– kann Stdlib Zusatzmodule verwenden, die nicht in PyRun enthalten sind
– Include Dateien and Zusatzmodule können zwischen mehreren Kopien
geteilt werden
13
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Agenda
1.
Einleitung
2.
Anwendungsfälle (Use Cases)
3.
Technische Details
4.
Diskussion
14
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Wie funktioniert PyRun ?
• Basiert auf Python's Tools/freeze
– mit ein paar kleinen Änderungen
• Details
– Nutzt ein generiertes Python Startskript und
einige generierte Hilfsmodule, um die Konfiguration zu speichern
– Fügt weitere Einträge in der Modules/Setup Datei hinzu,
um weitere C Module statisch integrieren zu können
– Läßt freeze auf fast der gesamten Python Stdlib laufen
15
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Verzeichnisstruktur
• PyRun arbeitet relativ zum Verzeichnis der pyrun
Programmdatei, was PyRun problemlos verschiebbar macht
• PyRun nutzt sein eigenes lib/ Verzeichnis für Erweiterungen
und kommt einer Systeminstallation nicht in die Quere
• Verzeichnisstruktur:
– ./bin/pyrun2.7
– ./lib/python2.7/ (optional, für Erweiterungen)
– ./include/python2.7/ (optional, zum Übersetzen von Erweiterungen)
16
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Modulsuche
• PyRun sucht relativ zum Verzeichnis <pyrun dir> der pyrun
Programmdatei wenn man es mit script.py aufruft:
–
–
–
–
–
<script.py dir>
<PYTHONPATH directories>
<pyrun dir>/../lib/python2.7/
<pyrun dir>/../lib/python2.7/lib-dynload/
<pyrun dir>/../lib/python2.7/site-packages/
• Lediglich die existierenden Verzeichnisse der Struktur
werden in sys.path aufgenommen
17
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Kompatibel mit distutils/setuptools/pip
• PyRun kompatibel zu distutils
– Python Konfiguration mußte dafür eingepatched werden
– Hat dazu geführt, daß wir das Standard Python Verzeichnislayout
nicht ändern konnten
• PyRun kompatibel zu setuptools und pip
– Hierfür mußte die -c Kommandozeilenoption implementiert werden
– Sonst eigentlich keine großen Änderungen nötig
• PyRun müßte auch mit zc.buildout arbeiten
– Haben wir noch nicht getestet
18
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Was fehlt ?
• Einige Module sind nicht dabei:
– *dbm, crypt, readline, parser, tkinter, _multiprocessing
– alle test Packages/Sub-Packages
• Diese können aber als normale .so Module oder Packages
geladen werden, falls nötig
19
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Was funktioniert nicht ?
• Einige Module der Python Test Suite funktionieren nicht,
wenn man sie unter der Kontrolle von regrtest.py laufen läßt
– Keine Probleme, wenn man die Module direkt startet
– Muß noch geprüft werden
• Stdlib Module, die Zugriff auf Dateiresourcen in Packages
benötigen, funktionieren nicht
– idlelib
– distutils bdist_wininst
– Viele test Packages (aber die sind in PyRun sowieso nicht dabei)
20
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Open Source Lizenz
• eGenix Public License
– abgeleitet von der CNRI Python License
– Open Source kompatibel
• Standard Python License
– PyRun integriert Python
21
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Agenda
1.
Einleitung
2.
Anwendungsfälle (Use Cases)
3.
Technische Details
4.
Diskussion
22
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Ähnliche Tools
• Andere freeze Tools
–
–
–
–
–
py2exe – Windows
py2app/bdist_mpkg – Mac OS X
cx_Freeze – Unix, Windows
PyInstaller – Unix, Windows
bbfreeze – Unix, Windows, Mac OS X
• Verfolgen andere Zielsetzung
– Tools packen Anwendungen in einige wenige Datein
23
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun: Die Zukunft
• Bessere Dokumentation
• Flexiblere Konfiguration
• Windows Support ?!
• setup.py ähnliches Kommandozeilen-Interface
24
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
eGenix PyRun
•
Fragen ?
25
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Zeit für die Kaffeepause ...
Vielen Dank für Ihre Aufmerksamkeit !
26
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
eGenix PyRun
Kontakt
eGenix.com Software, Skills and Services GmbH
Marc-André Lemburg
Pastor-Löh-Str. 48
D-40764 Langenfeld
Germany
eMail:
Phone:
Fax:
Web:
[email protected]
+49 211 9304112
+49 211 3005250
http://www.egenix.com/
27
(c) 2012 EGENIX.COM Software GmbH, [email protected]
FrOSCon 2012
Herunterladen