windows - cx\_Freeze med python-pakker (ikke kun et modul)

Indlæg af Hanne Mølgaard Plasc

Problem



Alle eksemplerne cx\_Freeze er for en fil (modul). Jeg skal gøre en eksekverbar for en hel python-pakke. Hvorfor er det svært at lave?


Her er min mappe:


test1/
  \_\_init\_\_ 
  \_\_main\_\_


Hvordan jeg kører dette fra kommandolinjen, er ved at bruge følgende cmd


python -m test1 


\_\_init\_\_ er tom og \_\_main\_\_ har bare en simpel print erklæring.
Jeg bruger python 3.5.1, men jeg kan skifte til python 3.4 hvis det ville løse problemet


Her er min setup.py for win64


from cx\_Freeze import setup, Executable
import sys

build\_exe\_options = {"packages": ['test1'],
                     "include\_files": []
                    }
executables = [
                Executable("\_\_main\_\_")
              ]
setup(
    name = "Foo",
    version = "0.1",
    description = "Help please!",
    author = "me",
    options = {"build\_exe": build\_exe\_options},
    executables = executables
)


Opdatering:
1- Se nedenstående kommentar til løsning for denne tilgang
2- Skift til pyinstaller, fordi det kan producere en exe-fil, ikke en mappe

Bedste reference


Frysning af en hel pakke giver ikke mening, fordi du opretter en eksekverbar binær, du vil have et Python-script, der kan køres standalone fra kommandolinjen. En pakke er normalt ikke startet ud af den -box, men vil blive importeret af et andet modul.


Du kan dog altid importere en pakke i dit script, så når du fryser det, bliver pakken inkluderet i din distribution.


Så gør noget som dette:


test1/
  \_\_init\_\_ 
  \_\_main\_\_
run\_test.py


run\_test.py nu importerer test1 og starter din funktion, der gør hvad du vil.


import test1
run\_the\_whole\_thing()


Bemærk: Du skal ændre din eksekverbarhed i setup.py til run\_test.py.