@pypyshka

Как правильно скомпилировать программу на Python в exe с помощью cx_freeze без «мусора»?

Добрый день.

Имеется небольшая программка, написанная на Python 3.4.4, которая работает с БД sqlite3. В ней используются следующие модули:
from PyQt4 import QtGui, QtCore, uic, QtSql
from itertools import zip_longest
import sys, sqlite3, random, pickle, hashlib, time

Размер исходников (включая пустую БД, пару иконок и ui) составляет почти 50 кб. Если откомпилировать это все в cx_Freeze, используя скрипт:
import sys
from cx_Freeze import setup, Executable

build_exe_options = {"include_files" : ["main.ui", "datebase.db"]}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "test",
        version = "0.1",
        description = "test",
        options = {"build_exe": build_exe_options},
        executables = [Executable("main.py", base = base, icon = "icon.ico")])

то получаем коллекцию файлов с exe размером 99 мб. Среди файлов есть также библиотеки, которые никак не используются и их удаление не нарушает работу программы. Я попробовал прописать модули в setup.py: cx_freeze не может найти QtGui, QtCore, uic, QtSql, если их прописать в packages или includes, получается прописать только "includes" : ["sys", "sqlite3", "random", "pickle", "hashlib", "time"], но в таком случае размер программы выходит на 1 мб меньше. Можно ли всё-таки как-то скомпилировать exe с максимально нужными файлами и библиотеками?
  • Вопрос задан
  • 1064 просмотра
Решения вопроса 1
BOOMER_74
@BOOMER_74
Full-Stack разработчик
В опциях можно указать, какие пакеты нужно включить:
"build_exe": {
	"packages": [
		"ConfigParser", "urllib", "PIL.Image"
	]
}

Также можно и исключить:
"build_exe": {
	"excludes": [
		"tkinter"
	]
}

PyQt как я помню использует dll файлы, их также нужно включить в include_files.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы