Sziasztok!
Eddig elvoltam a saját környezetemben, magamnak írtam scripteket, meg írtam Flask-kel webalkalmazást. Viszont most másnak is szüksége lenne az általam írt programra. Ehhez ugye Win alá futtatható exe-t kellene létrehozni. Próbáltam a pyinstaller-t, az auto-py-to-exe-t, de a probléma azonos: honnan szedi a lefordított program a beimportált és használt könyvtárakat? A libmagic-et megtaláltam, leszedtem a whl állományt. De kellene pl. jinja2 is. Ezeket a függőségeket hogyan tudom kielégíteni a fordítás után?
Előre is köszi a segítséget!
Üdv: Laci
Hozzászólások
A Pyintaller becsomagolja a használt libeket a binárisba, amit futtatáskor kicsomagol a /tmp-be.
Linux alatt így használtuk:
Windows alatt generáltam az exe-t, de fordítás után hiányolta a magic és a jinja2 csomagokat. A magic hiányára találtam megoldást, de a jinja2-re nem.
Az én kedvencem a cx_Freeze. Mindent csomagol amit kell. Sőt még ha kell egy msi-t is csinál.
https://cx-freeze.readthedocs.io/en/latest/
A múltkori programom végül is nem lett lefordítva, meghagytam magamnak. De most csak erőlködnék. Írtam egy programot, ami grafikus felületű, TkInter-t használtam hozzá.
cx_Freeze-zel fordítanék. Lefordul, a Tk és Tcl DLL-jeit mellé tettem, de futtakáskor hiányolja őket mégis. Szerintem rosszul tettem őket mellé.
Van valahol jó leírás? Python 3.9 és cx_Freeze 6.9.
Ha csak a Tkintert használod, akkor felesleges a cx_freeze; a Tkinter a standard Python része, bár lehet, hogy Winre nem telepszik automatikusan, már nem emlékszem (nem használok Wint).
eutlantis
TkInter + ElementTree + Pandas + os van importálva a programnak, de szükségem lenne egyszerű felhasználónak egy futtatható EXE-re, ne kellene a gépére Python-t tenni ( az igazi az MSI telepítő lenne, mert az menő :) ).
Nehéz ügy. Talán egy PowerShell scripttel kellene "összeragasztani" a pythonos programodat; a script, ha szükséges telepíti a netről a Pythont , Pandas-t stb.-t. A Python telepítőből van .exe, azt akár mellékelheted a csomagodhoz, de a Pandast a függőségei miatt szerintem csak netről (pypi.org) lehetséges telepíteni.
"ne kellene a gépére Python-t tenni"
Az mindenképpen fenn lesz, ugye, vagy rendszer szinten vagy beágyazva az .exe-be.
eutlantis
Most generálok 32 bites és 64 bit-es MSI telepítőket a cx_Freeze segítségével. Mindkét architektúrához saját venv mappával, azonos csomagok vannak feltelepítve. Az az érdekes, ha 32-bites fordítóval fordítom, akkor 30MB az MSI, ha 64-bitessel, akkot 240MB. A setup.py ugyanaz. PyCharm Community alatt programozok ... Ezt mi okozhatja? 1-2 MB még elfogadható lenne ...
Ha csak exe-t fordítasz akkor nem rakja mellé a dll-eket azt neked kell megcsinálni. Ha kellenek a dll-el akkor msi-t kell csinálni.
Elvileg az a baja, hogy a jinja2 PackageLoader nem tamogatott pyinstallerben.
Itt egy workaround, hatha segit.
https://stackoverflow.com/a/45619374/8259358
nem ide
eutlantis