Nogen med kendskab til pyinstaller

Tags:    python compiler

Hej.

Jeg vil lige hører om der er nogen der har kendskab til pyintaller?

Jeg fik en bog omkring python og har lavet nogen meget simple programmer da tanken strejfede mig
og man kan lave en .py fil om til en .exe som kan kører uden man har installeret python.

Jeg går ud fra at det er det pyinstaller kan.

Men kan ikke umiddelbart se mig ud af hvordan det virker.
Nogen der har nogen erfaring med at lave .py til .exe?



Indlæg senest redigeret d. 03.03.2016 18:29 af Bruger #21150
Jeg tror ikke den laver den om så det ikke kræver Python er installeret. Jeg tror mere det skal tænkes, som at den laver en samlet exe pakke der indeholder Python. Som så kan køres på maskiner der ikke har det installeret.



Jeg har ikke leget med pyinstaller, men har tidligere brugt py2exe og cx_freeze. Py2exe laver kun til exe filer, som navnet antyder, mens cx_freeze kan lave binaries til andre platforme (f.eks. Linux).

Programmerne virker ved at indsamle de python moduler dit python program bruger. Dette inkluderer også lavniveau-biblioteker, som DLL filer visse moduler bruger. Når den har indsamlet disse ting, lægger den også en kopi af Python fortolkeren med. Når exe filen så kører opstarter den Python interpreteren som kører dit program. Det er sådan det virker fra hukommelsen af. Et typisk problem, er hvis den overser noget programmet bruger og ikke pakker det med. Det problem kan jeg huske at have haft med py2exe.

Her er linket til manualen for pyinstaller som beskriver hvordan den virker. Som du kan se, hvis du har et relativt simpelt program, skal du blot køre: pyinstaller myscript.py

For at uddybe det Dan skriver. Brugerne behøver ikke at installere Python på samme måde, som du har gjort for at udvikle på det. Men det er sandt at Python fortolkeren bliver bundlet med ved siden af. I forhold til en "rå" .exe fil, fylder det en del, men der er væsentlig mindre end hvad en fuld python installation gør. Omkring 5-8MB for en applikation som kun bruger standard Python ting ser ud til at være normen.



Indlæg senest redigeret d. 03.03.2016 19:56 af Bruger #14645
Tak for svarene :)

Det var meget brugbart.. Gav i hvert fald en god forståelse for hvordan det hænger sammen.

Men jeg kan fornemme at det aldrig vil være helt optimalt at benytte den løsning, i forhold til hvad man ellers kan benytte at programmeringssprog? :)



Det er en ganske fin løsning til hvordan distribuerer man et Python program. Programmet vil få den samme performance som almindelig Python, men ikke den samme performance som hvis du skrev det i C. Et problem at det ikke er en 100% løsning. Hvis et bibliotek i Python loader andre moduler på en mærkelig måde, skal du til at finde ud af hvad det er den loader, og tilføje det til din konfiguration når du laver .exe filen. Det kan godt blive lidt bøvlet. Men vil gætte på at for langt størstedelen af projekter nu om dage, er disse værktøjer modne nok til at det er en smertefri proces.

Jeg har for nyligt leget med Nim. Det kan sige at være lidt Python-agtigt på overfladen: det bruger mange af de samme nøgleord, def, elif; samt betydelig whitespace. Så kompilerer det til rigtige .exe filer som er fri for en interpreter, og er krydsplatform. Det er temmelig højniveau, dog ikke så højniveau som Python.



Indlæg senest redigeret d. 03.03.2016 20:14 af Bruger #14645
t