Как мне преобразовать приложение Python в .exe
? Я сделал программу с tkinter
и задавался вопросом, как сделать ее доступной для других. Я использую Python 3.3. Я искал немного, но ничего не нашел.
Как скомпилировать приложение Python 3 в .exe?
Ответ 1
cx_Freeze делает это, но создает папку с большим количеством зависимостей. py2exe теперь делает это, и с опцией -bundle-files 0 создается только один EXE, что, вероятно, является лучшим решением для вашего вопрос.
ОБНОВЛЕНИЕ: после появления сторонних модулей, которые py2exe не удалось найти, я перешел к pyinstaller, как предлагает kotlet schabowy. Оба имеют достаточную документацию и включают в себя .exe, которые вы можете запускать с параметрами командной строки, но мне еще предстоит скомпилировать script, который pyinstaller не может обрабатывать без отладки или сглаживания головы.
Здесь простая удобная функция, которую я использую для сборки .exe с моими значениями по умолчанию из интерпретатора (конечно, пакет или подобное тоже было бы неплохо):
import subprocess,os
def exe(pyfile,dest="",creator=r"C:\Python34\Scripts\pyinstaller.exe",ico=r"C:\my icons\favicon.ico",noconsole=False):
insert=""
if dest: insert+='--distpath ""'.format(dest)
else: insert+='--distpath "" '.format(os.path.split(pyfile)[0])
if ico: insert+=' --icon="{}" '.format(ico)
if noconsole: insert+=' --noconsole '
runstring='"{creator}" "{pyfile}" {insert} -F'.format(**locals())
subprocess.check_output(runstring)
Ответ 2
Я нашел PyInstaller, чтобы работать наилучшим образом. У вас есть много вариантов, например, вы можете упаковать все в один файл exe.
Мне нравится использовать его вместе с Cython для скорости.
Ответ 3
Вы можете использовать cx_Freeze. Существует руководство здесь.
Ответ 4
Используйте Pyinstaller. После его установки откройте терминал в каталоге, в котором находится ваш проект.
-
$ pyinstaller script1.py script2.py ...
(где script1, script2 и т.д. - все скрипты, используемые в вашем проекте.) -
После завершения команды откройте папку
dist
и введите подкаталог. Там вы найдете исполняемый файл.
Надеюсь, что это поможет.