Bazându-se pe fișierul exe sau compilarea

Bazându-se pe fișierul exe sau compilarea.

Cu siguranță, toată lumea există o dorință irezistibilă, și, uneori, o nevoie reală, compila dvs. PY-fișier într-un fișier .exe executabil. Astăzi, pe internet, puteți găsi o mulțime de descrieri detaliate ale procedurilor, dar aproape toate dintre ele sunt scrise off, cuvânt cu cuvânt dintr-o sursă nu foarte de încredere, astfel încât într-un timp scurt, adepții acestor metode se oprește (testat pe sine).

Am ceva experiență în acest domeniu, pe care intenționați să picteze un lucru .py reteta de compilare a exe, nu uitați să menționați modalitățile de a rezolva cele mai frecvente probleme sborki.Naskolko știu eu, singurul instrument care poate succesul mult sau mai puțin stabil compilarii aplicații (și pe care l-am folosit pentru aproape un an) - l cx_Freeze. Găsi și descărca, cred că va fi capabil să. Și astfel - pentru a crea un dosar director dist user-friendly pentru a crea un dosar setup.py:

de configurare import cx_Freeze, executabilă
import sys

bază = Nimic
dacă sys.platform == 'win32':
bază = 'Win32GUI'

configurare (nume = 'FirstScript',
versiune = „0,18“,
= executabile [executabilă (script = 'main.py', bază = bază)])

și în același director poartă fișierul principal main.py.

Deschideți un prompt de comandă și executați compilarea:

D: [enter] D: # 92; cd # 92; dist [enter] D: # 92; dist> c: # 92; python27 # 92; piton setup.py construi [enter]

Ca rezultat, vom obține exe.win32-2.7 dosar, și vney rula nostru main.exe fișier script

În dosarul specificat pe care doriți să copiați toate elementele grafice și fișiere multimedia legate de programul nostru.

Dacă aveți orice tip de eroare: Fișier „main.py“, linia 36, ​​în __init__
pygame.error: Nu s-a putut deschide b2.gif - motivul este acest lucru.

În cazul în care tipul de eroare:

Bazându-se pe fișierul exe sau compilarea

trebuie să adăugați fișierul în programul importă modulul specificat: pygame._view import

Dacă utilizați py2exe organizați un dosar în care fișierul cu programul și fișierul setup.py:

de la distutils.core configurare import
py2exe import

comandă de compilare linie Python setup.py py2exe [enter]

Colectarea de codificare:
În primul rând, atunci când compilarea script-urile de foarte multe ori probleme cu caracter de date, în special, toate literele românești sunt convertite în așa-numitele fără sens. Pentru a rezolva această problemă, la începutul fiecărui script compilat prescrie două echipe:

Punctul principal de aici este, desigur, pictograma de opțiuni. mâner care nu este atât de dificil.

Angaja o terță parte module:
Că acest punct programatorii sunt întotdeauna probleme. Până în prezent, nu am văzut o metodă de lucru pentru a rezolva situația, așa că sa găsit. Decizia pur și simplu elementar. Așa cum este cazul cu imagini, trebuie doar să copiați un modul de terță parte în dosarul cu fișierul .exe. Testat pe o axă virtuală și un prieten de calculator: ambele nu au interpretul Python. Pachetul Laminarea PMW - a luat întreg dosarul python33 / lib / PMW.

Acest lucru, de altfel, nu este surprinzător, pentru că, așa cum am spus mai sus, cx_Freeze sews toate interpretorul Python. care este capabil să execute Python-cod necompilat. Rețineți că modulele vor rămâne deschise, ceea ce înseamnă că orice atacator care stie sintaxa Python. Se poate modifica bine modulul de terță parte în scopurile lor rele.

Desigur, aceasta compilatie este departe de a fi ideală și nu funcționează întotdeauna prima dată pentru a compila script-ul ruleaza, asa ca ruleaza in modul „Utilizator“. Compilarea unul dintre primele sale programe pentru „masele“, am întâlnit următoarea eroare atunci când rulează programul meu compilat:

Traceback (cel mai recent apel ultima):
Fișier «C: # 92; Python33 # 92; lib # 92; site-ul de pachete # 92; cx_Freeze # 92; initscipt # 92; Console.py», linia 27, în exec (cod, m .__ dict__)
Fișier «PrintQualityDocs_V1_1.py», linia 35, în
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 1565, în _find_and_load
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 1532, în _find_and_load_unlocked
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 584, în _check_name_wrapper
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 495, în set_package_wrapper
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 508, în set_loader_wrapper
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 1132, în load_module
Fișier «X: # 92; Python33-x32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 313, în _call_with_frames_removed
Fișier «_mssql.pyx», linia 53, în _mssql init (_mssql.c: 21719)
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 1565, în _find_and_load
Fișier «X: # 92; Python33-X32 # 92; lib # 92; importlib # 92; _bootstrap.py», linia 1529, în _find_and_load_unlocked
ImportError: Nici modul denumit „UUID“

A doua opțiune (pentru viitor) - pentru a ajusta script-ul și-l înregistreze în modulul lipsă tras-o imediat la compilare:

import sys
de configurare import cx_Freeze, executabilă

build_exe_options = <«packages». [ «os». «uuid» ]> # Aici vom specifica «UUID», și pentru a compila automat modulul strânge
bază = «Console» program de consolă # Simptom - programul nostru va rula în interpret de comandă
configurare (nume = «ProgramName». # Puteți specifica numele programului

Versiune = «ProgrmaVersion». # Aici puteți specifica versiunea programului
descriere = «ProgramDescription». # Aici puteți introduce o descriere a programului
opțiuni = <«build_exe». build_exe_options>,
= executabile [executabilă (bază = bază «FileName.py».)]) # Aici, în schimb FileName.py script-ul specificat că vom compila.

Cred că dacă aveți o problemă similară, o prezentare mai detaliată a modului de a compila folosind cx_Freeze am avut nevoie să


Asamblarea fișierul de instalare:
Cu aceasta, probabil, era necesar să se înceapă. Pentru a transfera / comoditatea de transmisie compilate pot fi implicate direct în .msi-fișier. Acesta este un fișier standard de instalare Windows, care, atunci când rula va cere utilizatorului să aleagă directorul de instalare și extrage toate datele înapoi. Cu toate acestea, ea face imposibilă pentru a colecta întreaga aplicație într-un singur fișier .exe (să fiu sincer, eu nu știu de ce acest lucru este necesar). Asigurați-.msi fișier prin rularea comenzii în consolă: