Donnerstag, 9. Februar 2012

Python-Scripts unter Windows in ausführbare .exe-Dateien umwandeln

Mit Python-Scripts kann man auch in einer Grossfirma wie meinem Arbeitgeber Arbeitsabläufe automatisieren, so beispielsweise das parsen einer Excel-Datei mit dem Modul openpyxl. Ich suche in der Excel-Datei in einer bestimmten Spalte nach Parametern und in derselben Zeile dann nach den auf dem produktiven System eingestellten Werten.

Doch was macht man nun mit dem Python-Script, wenn es als stabil empfunden und zur Distribution unter den Arbeitskollegen freigegeben wurde? Man kann nicht erwarten, dass nur ein einziger Mitarbeiter Python auf seinem Windows-Rechner installiert hat und das Script so ausführen kann.

Zum Glück gibt es eine einfache Möglichkeit, um Python-Scripts in eine .exe-Datei umzuwandeln, welche ausschliesslich aus dieser Datei bestehen und deshalb problemlos herumgereicht werden können.

Hierfür benötigt man den pyinstaller (kompatibel mit Python 2.7), welchen man folgendermassen aufruft:

python C:\Source\pyinstaller-1.5.1\pyinstaller.py C:\Source\emeidi\<script>.py -F

Der Switch -F sagt pyinstaller, dass er das Script in eine einzige, grosse .exe-Datei umwandeln und auf den sonst ebenfalls nötigen .dll-Plunder verzichtet.

Anschliessend findet sich die .exe-Datei unter C:\Source\pyinstaller-1.5.1\<script>\dist\<script>.exe, welche man beispielsweise auf den Desktop kopieren und von dort ausführen kann.

Liked this post? Follow this blog to get more. 

Tags: , , ,
Labels: Allgemein

Ein Kommentar Kommentare

Georg Sam sagt:

Tried it out.

Ran the subsequent command:

python E:\Python\Downloads\PyInstaller-2.1\pyinstaller.py E:\Testing\VW\GMD\Testdaten\test_geodata_whole_line.py -F

Exceution seemed to work fine but finally resulted in the following output:

1660 INFO: Analyzing E:\Python\Downloads\PyInstaller-2.1\PyInstaller\loader\pyi_importers.py
1690 INFO: Analyzing E:\Python\Downloads\PyInstaller-2.1\PyInstaller\loader\pyi_archive.py
1720 INFO: Analyzing E:\Python\Downloads\PyInstaller-2.1\PyInstaller\loader\pyi_carchive.py
1750 INFO: Analyzing E:\Python\Downloads\PyInstaller-2.1\PyInstaller\loader\pyi_os_path.py
1750 INFO: Analyzing E:\Testing\VW\GMD\Testdaten\test_geodata_whole_line.py
Traceback (most recent call last):
File „E:\Python\Downloads\PyInstaller-2.1\pyinstaller.py“, line 18, in
run()
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\main.py“, line 88, in run
run_build(opts, spec_file, pyi_config)
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\main.py“, line 46, in run_build
PyInstaller.build.main(pyi_config, spec_file, **opts.__dict__)
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\build.py“, line 1924, in main
build(specfile, kw.get(‚distpath‘), kw.get(‚workpath‘), kw.get(‚clean_build‘))
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\build.py“, line 1873, in build
execfile(spec)
File „C:\Users\t321\test_geodata_whole_line.spec“, line 6, in
runtime_hooks=None)
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\build.py“, line 446, in __init__
self.__postinit__()
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\build.py“, line 309, in __postinit__
self.assemble()
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\build.py“, line 599, in assemble
importTracker.analyze_script(script)
File „E:\Python\Downloads\PyInstaller-2.1\PyInstaller\depend\imptracker.py“, line 272, in analyze_script
co = compile(stuff_mod, fnm, ‚exec‘)
TypeError: compile() expected string without null bytes

Question: how can I have it run without producing an error message?

Help would be dearly appreciated.

Thanks in advance

Georg

Kommentar erfassen