Въз основа на досието на Търсейки или компилация
Въз основа на досието на Търсейки или компилация.
Разбира се, всеки има непреодолимо желание, а понякога и реална необходимост, компилирате .py-файла в изпълним .exe. Днес в Интернет можете да намерите изобилие от подробно описание на процедурите, но почти всички от тях са отписани, дума по дума от не особено надежден източник, така че за кратко време последователите на тези методи идва в период на застой (тестван на себе си).
Имам известен опит в тази област, които възнамерявате да рисувам работна рецепта компилация .py да .exe, не пропусна да отбележи, начините за решаване на най-често срещаните проблеми sborki.Naskolko знам, единственият инструмент, който може повече или по-малко стабилен успех компилация приложения (и което са използвали в продължение на почти една година) - това cx_Freeze. Намерете и да го свалите, мисля, че ще бъде в състояние да. И така - да се създаде лесен за употреба папка на директория дистрибуция, за да създадете setup.py папка с файлове:
от настройка cx_Freeze внос, Изпълним
сис внос
база = Няма
ако sys.platform == "win32":
база = 'Win32GUI "
настройка (име = 'FirstScript "
версия = '0.18',
изпълними = [изпълним (скрипт = 'main.py ", база = база)])
и в същата папка носи основната main.py. файл
Отворете команден прозорец и изпълнете компилация:
D: [влиза] D: # 92, # 92 CD; дист [влиза] D: # 92; дист> C: # 92, # 92 python27; питон setup.py изгради [влиза]
В резултат на това ние се exe.win32-2.7 на папката и vney тече нашия скрипт файл main.exe
В коя папка искате да копирате всички графики и мултимедийни файлове, свързани с нашата програма.
Ако имате някакви тип грешка: Файл "main.py", ред 36, в __init__
pygame.error: не може да се отвори b2.gif - причината е тази.
Ако видът на грешката:
трябва да добавите файла на програмата внася определения модул: внос pygame._view
Ако използвате py2exe организира папка, в която файла с програмата и setup.py файл:
от настройка distutils.core внос
внос py2exe
Съставяне на командния ред питон setup.py py2exe [въведете]
Събиране на кодиране:
На първо място, при съставянето на скриптове много често проблеми с символни данни, по-специално, всички български букви се превръщат в т.нар безсмислици. За да решите този бъг, в началото на всеки съставен сценарий предписват два отбора:
Основната идея тук е, разбира се, иконата на опцията. дръжка, която не е толкова трудно.
Наеме трети страни модула:
Че тази точка на програмистите винаги има проблеми. Досега не съм виждал работещ метод за разрешаване на ситуацията, така че той се озова. Решението просто елементарно. Както е случаят със снимките, трябва само да копирате модул третата страна в папката с .exe-файл. Тестван на виртуална ос и приятел на компютъра: и двете не трябва интерпретатора на Питон. Ламиниране пакет PMW - превзе цялата папка python33 / Lib / PMW.
Това, между другото, не е изненадващо, защото, както казах по-горе, cx_Freeze шие всички интерпретатора на Питон. който е в състояние да изпълни Python-код некомпилирания. Имайте предвид, че модулите ще останат отворени, което означава, че всеки хакер, който познава синтаксиса на Python. Тя може да променя модула за трета страна в злите си цели.
Разбира се, тази компилация е далеч от идеалното и не винаги работи за първи път да съставят работи скрипта, така че той работи в режим "Потребител". Съставяне на едно от първите си програми за "масите", аз натъкна на следния проблем, когато работи ми съставя програма:
Traceback (най-новата покана последно):
Файл «C: # 92; Python33 # 92; ИЪ # 92; на мястото опаковки # 92; cx_Freeze # 92; initscripts # 92; Console.py», ред 27, в
File «PrintQualityDocs_V1_1.py», ред 35, в
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 1565, в _find_and_load
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 1532, в _find_and_load_unlocked
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 584, в _check_name_wrapper
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 495, в set_package_wrapper
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 508, в set_loader_wrapper
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 1132, в load_module
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 313, в _call_with_frames_removed
File «_mssql.pyx», ред 53, в първоначален _mssql (_mssql.c: 21719)
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 1565, в _find_and_load
Файл «X: # 92; Python33-x32 # 92; ИЪ # 92; importlib # 92; _bootstrap.py», линия 1529, в _find_and_load_unlocked
ImportError: Няма модул на име "UUID"
Вторият вариант (за в бъдеще) - за настройка на скрипта и да го регистрирате в липсващия модул, за да го извади веднага при съставянето на:
сис внос
от настройка cx_Freeze внос, Изпълним
build_exe_options = <«packages». [ «os». «uuid» ]> # Тук посочете «UUID», както и за съставяне на модула автоматично затягане
база = «Console» # Симптом конзола програма - нашата програма ще се проведе в командния интерпретатор
настройка (име = «ProgramName». # Може да укажете името на програмата
версия = «ProgrmaVersion». # Тук можете да определите версията на програмата
описание = «ProgramDescription». # Тук можете да въведете описание на програмата
опции = <«build_exe». build_exe_options>,
изпълними = [Изпълнител (основа = база «FileName.py».)]) # Тук, вместо FileName.py определен скрипт, който ние компилирате.
Мисля, че, ако имате подобен проблем, по-подробен профил на това как да се съставят с помощта cx_Freeze имах нужда да
Сглобяване на инсталационния файл:
С това, може би, е необходимо да се започне. За да прехвърлите / предаване удобство компилиран кандидатстване могат да бъдат пряко ангажирани в .msi-файла. Това е стандартен инсталационен файл на Windows, че когато тичам ще накара потребителят да избере инсталационната директория и да извлича всички данни обратно. Все пак, това не позволява да се събира цялото приложение в един .exe файл (за да бъда честен, аз не знам защо това е необходимо). Грим .msi файл с командата в конзолата: