hotel regim hotelier
hotel yahoo domain
Deci ca sa fie clar pentru toata lumea.
Python-ul este un limbaj dinamic de nivel inalt orientat pe obiecte. Acesta functioneaza pe baza de interpreter in mod interactiv ( scrii cod direct in interpreter ca intr-un shell ) sau citind surse ce contin cod. Ai sursa .py, dai dublu-click pe ea, porneste un process care se ocupa de citirea si executarea instructiunilor. De aceea, pana la ora actuala, o sursa in Python nu se poate transforma in machine code intr-un singur .exe care sa poata rula stand-alone, ci se poate "ingheta" alaturi de un executabil si de celelalte fisiere dependente ca sa ii porneasca si user-ului care nu are Python-ul instalat. Si pentru lucrul acesta s-au scos mai multe module dintre care cele mai bune doua ( in opinia mea ):
Browse py2exe Files on SourceForge.net
Te ajuta mai mult daca folosesti Python 2.x.
cx_Freeze
Te ajuta mai mult daca folosesti versiuni mai noi Python 3.x.
Avantaje / Dezavantaje
De py2exe nu s-a mai tinut nimeni din 2008 incoace si de aceea ultima versiune se duce pana in 2.6.x si 2.7.x ( care nici nu am vazut sa existe [ probabil pentru cei de la ActiveState { dezvolta si ei Python-ul dar nu e open source si nu sunt cei autentici } ] ) in schimb cx_Freeze continua si au si versiuni pentru 3.x.
In py2exe poti prinde toate fisierele intr-un singur .exe, modificand 'bundle_files' si 'zipfile', iar in cx_Freeze inca nu descoperisem daca se poate si cum, oricum cand ajungi la partea de GUI deja se complica lucrurile si nu-ti mai arde deloc sa "ingheti" tot intr-un singur executabil.
Pentru a "ingheta" surse trebuie sa ai sursa.py si ce fisiere mai vrei tu ( icon.ico, etc. ) si iti mai trebuie alaturi de celelalte fisiere un fisier setup.py care contine urmatorul cod:
py2exe
Code:
from distutils.core import setup
import py2exe
import os
import sys
import subprocess
import shutil
## si le fichier bundlepmw.py contient l'importation regsub (qui n'existe plus depuis la version 2.5 de Python)
## Vous pouvez sinon le faire à la main en remplaçant "regsub" par "re" et "gsub" par "sub"
fp = open(sys.prefix + os.sep + "Lib/site-packages/Pmw/Pmw_1_3/bin/bundlepmw.py")
a = fp.read().replace("regsub", "re").replace("gsub", "sub")
fp.close()
ft = open(sys.prefix + os.sep + "Lib/site-packages/Pmw/Pmw_1_3/bin/bundlepmw.py", "w")
ft.write(a)
ft.close()
## Création du fichier Pmw.py dans le répertoire courant
subprocess.call([sys.executable, sys.prefix + os.sep + "Lib/site-packages/Pmw/Pmw_1_3/bin/bundlepmw.py",
sys.prefix + os.sep + "Lib/site-packages/Pmw/Pmw_1_3/lib"])
## On copie les 2 fichiers PmwBlt.py et PmwColor.py dans le répertoire courant
shutil.copyfile(sys.prefix + os.sep + "Lib/site-packages/Pmw/Pmw_1_3/lib/PmwBlt.py", "PmwBlt.py")
shutil.copyfile(sys.prefix + os.sep + "Lib/site-packages/Pmw/Pmw_1_3/lib/PmwColor.py", "PmwColor.py")
setup
(
options={'py2exe': {"optimize": "2", 'bundle_files': 3}},
windows=[{'script':'source.pyw', 'icon_resources':[(1, 'icon.ico')]}],
name="Soft",
version='1.0',
company_name="Me",
copyright = "Me",
description='Some description.',
author='Me',
author_email='Me@domain.com',
url='http://site.com/',
#zipfile=None # "Don't send" error if zipfile is not commented and you use a windows GUI source
)
cx_Freeze
Code:
from cx_Freeze import setup, Executable
executables =
[
Executable
(
script="source.py",
initScript=None,
base='Console', # Win32GUI
compress=True,
appendScriptToExe=True,
appendScriptToLibrary=False,
icon=None,
copyDependentFiles=True
)
]
setup
(
version="1.0",
description="Some description.",
author="Me",
name="Soft",
options=
{
"build_exe":
{
"optimize": 2,
"compressed": True,
"create_shared_zip": False,
"include_in_shared_zip": False,
"append_script_to_exe": True,
"copy_dependent_files": True
}
},
executables=executables
)
Pentru ambele exemple se intra in cmd
cd %locatie% unde %locatie% este path-ul ce contine setup.py
< pentru py2exe >
setup.py py2exe
< pentru cx_Freeze >
setup.py build
Note:
Daca ai un script cu GUI si vrei sa nu se mai vada consola folosesti extensia .pyw in loc de .py.
In exemplul de script pentru py2exe codul initial este pentru compatibilitatea cu Pmw, un pachet aditional pentru MegaWidgets-uri provenite din Tk si script-ul este adaptat pentru o sursa cu GUI de aceea am folosit extensia .pyw si am folosit argumentul 'windows' in loc de 'console'.
Mai multe detalii gasesti la ei pe site la sectiunea documentatie.
Sper ca ti-a fost de ajutor sa te lamureasca asupra mai multor lucruri.