Hvorfor konvertere PYC til EXE?
Hovedårsaken til å lage en .exe er distribusjon: en pakket kjørbar fil kjører på Windows uten at Python er installert, noe som fjerner kravet til oppsett for sluttbrukere eller maskiner du ikke kontrollerer. En .pyc er bytekode som avhenger av Python-tolkeren ved kjøring og kan ikke kjøres som en frittstående fil.
Hvordan konvertere PYC til EXE
PyInstaller FREE
Installer med pip install pyinstaller, kjør pyinstaller --onefile ditt_skript.py, og finn den resulterende .exe-filen i dist/-mappen. Bruk --noconsole for GUI-apper og --icon=app.ico for å angi et egendefinert ikon.
cx_Freeze FREE
Installer med pip install cx_Freeze, opprett en setup.py med skriptet ditt som en Executable, og kjør python setup.py build; utdataene vises i en build/-mappe som må distribueres som en helhet.
Om disse formatene
En .pyc-fil er kompilert Python-bytecode som CPython bufrer automatisk for å øke hastigheten på oppstarten. Du trenger vanligvis ikke å åpne eller røre den. For å kjøre en, bruk den…
Åpne .PYC-detaljer →En EXE-fil er et eksekverbart program for Windows. På Windows dobbeltklikker du på den for å kjøre den. På Mac eller Linux må du bruke CrossOver eller Wine - EXE-filer kjører ikke naturlig…
Åpne .EXE-detaljer →Kvalitet og hva du bør passe på
- Du trenger
.py-kildefilene, ikke bare.pyc; hvis du bare har en.pyc, må du dekompilere den først, men vær klar over at dekompilering er ufullstendig for Python 3.9 og nyere. - Den produserte
.exe-filen er plattformspesifikk - bygging på Windows lager en Windows-fil, og du kan ikke krysskompilere til et annet operativsystem. - Test
.exe-filen på en ren maskin uten Python installert for å bekrefte at alle importer og avhengigheter ble inkludert korrekt.
Ofte stilte spørsmål
Hva er forskjellen mellom PyInstaller og cx_Freeze?
--onefile-modus som produserer en enkelt selvstendig .exe; cx_Freeze produserer alltid en mappe med filer som må holdes sammen.Kan jeg bygge en .exe direkte fra en .pyc-fil?
.py-kildefiler; hvis du bare har en .pyc, må du dekompilere den tilbake til .py først.