Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
pythono
7 лет назад

Python // Компиляция exe-программ в cx_freeze



Альтернативным вариантом создания .exe файла является библиотека cx_freeze. Давайте установим её:

Идём сюда:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_freeze

и скачиваем версию whl файла для вашей ОС и для вашей разрядности Python (32/64 бит - то есть win32/amd64)

Ставим wheel который нужен для установки whl файла:

pip install wheel

После этого, кладём скачанный whl файл на диск D: и даём команду

pip install путь-к-файлу-whl-с-полным-именем

например:

pip install D:\cx_Freeze-5.0.2-cp36-cp36m-win_amd64.whl

У вас файл может называться по другому в зависимости от его версии и версии Python которую вы используете (и качать нужно именно соответствующую версию файла)

После установки мы можем создавать .exe файлы. В качестве примера я скомпилирую скрипт из прошлого урока.

Для этого в каталоге со скриптом который вы хотите преобразовать в exe нужно создать файл setup.py со следующим содержанием:

from cx_Freeze import setup, Executable
setup(
    name = "DownBlog",
    version = "1.0",
    description = "Download Blog",
    executables = [Executable("downblog.py")]
)

Здесь вместо downblog.py нужно вставить имя вашего скрипта на питоне который вы компилируете.

Перейдя в командной строке в каталог с вашим скриптом, и находясь в данном каталоге дайте команду

python.exe setup.py build

и рядом появится новый каталог build, в котором, среди кучи необходимых для работы библиотек вы обнаружите downblog.exe

Минусом использования cx_freeze является то, что приложение компилируется не в один файл, а в папку, в которой есть куча библиотек, и среди них exe файл. Для работы exe-шника придется тащить с собой всю эту папку с библиотеками. Плюсом использования cx_freeze является то что он справляется с компиляцией сложных проектов, на которых спотыкается pyinstaller

Также необходимо упомянуть про глюки с компиляцией библиотеки requests и прочих некоторых модулей. Если компилятор ругается на отсутствие некоторых модулей в процессе компиляции, или запуска экзешника, попробуйте явно прописать данные модули и их пути в файле настроек компилятора setup.py

В качестве примера вот файл setup.py одного из моих старых проектов test.py где используется requests:

Исходник setup.py:

import requests
import sys
import os
from cx_Freeze import setup, Executable
sys.path.append(os.path.join(sys.path[0],'src'))
executable = Executable(script="test.py")
options = {"build_exe":{'include_files':['C:/Program Files/Python36/Lib/site-packages/requests/','C:/Program Files/Python36/Lib/site-packages/idna']}}
setup(
   name="example",
   version="0.1",
   description="Hello",
   requires = ["requests"],
   options = options,
   executables = [executable]
)


134
12.990 GOLOS
На Golos с August 2017
Комментарии (9)
Сортировать по:
Сначала старые