Как скомпилировать исполняемый файл с помощью cx_Freeze с модулями в Python 3.x - PullRequest
0 голосов
/ 12 ноября 2018

Это мой первый пост здесь, поэтому, если я ошибусь, пожалуйста, скажите мне, я исправлю это. Я нахожусь в python 3.6, Windows 10, у меня есть программа, которую мне нужно скомпилировать с cx_Freeze. Я не могу заставить setup.py работать, при попытке компиляции возникает ошибка. Программа, которую я пытаюсь скомпилировать, начинается с:

import pygame
from pygame.locals import *
import sys
import time
import tkinter
from tkinter import filedialog
from tkinter import messagebox

Мне нужно все это, чтобы программа работала, но мне нужно скомпилировать ее с cx_Freeze, Кто-нибудь, пожалуйста, помогите мне!

Мой setup.py является

from cx_Freeze import setup, Executable

base = None

executables = [Executable("to-compile.py", base=base)]

packages = ["idna","os","sys","tkinter","pygame"]
options = {'build_exe' : {'packages':packages}}

setup(name="<any name>",options=options,version="<any number>",description="<any description>",executables=executables)

У меня есть compiler.bat, который содержит:

python setup.py build

И моя ошибка: Ошибка Powershell

Похоже, я не могу вставить изображения, но мне нужна репутация.

PyInstaller не работает:

Я отправлю код ошибки на pastebin

Если есть решение проблемы с py2exe (или любым другим вариантом этого компилятора), пожалуйста, скажите, что я просто на Python 3.

1 Ответ

0 голосов
/ 14 ноября 2018

Вам необходимо установить переменные окружения TCL_DIRECTORY и TK_DIRECTORY и указать cx_Freeze включить библиотеки Tcl и Tk с помощью опции build_exe include_files, как это сделано в в этом ответе, Если вы используете cx_Freeze 5.1.1 или 5.1.0, вам нужно сделать это немного по-другому, см. этот ответ .

Кроме того, вы должны установить base = "Win32GUI" для приложений с графическим интерфейсом под Windows.

В итоге, если вы используете cx_Freeze 5.1.1 (текущая версия), попробуйте использовать следующий скрипт установки:

from cx_Freeze import setup, Executable

import os
import sys
PYTHON_INSTALL_DIR = os.path.dirname(sys.executable)
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')

include_files = [(os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'), os.path.join('lib', 'tk86t.dll')),
                 (os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'), os.path.join('lib', 'tcl86t.dll'))]
packages = ["idna","os","sys","tkinter","pygame"]
options = {'build_exe' : {'packages':packages, 'include_files':include_files}}

# GUI applications require a different base on Windows (the default is for a console application).
base = None
if sys.platform == "win32":
    base = "Win32GUI"

executables = [Executable("to-compile.py", base=base)]

setup(name="<any name>",options=options,version="0.1",description="<any description>",executables=executables)
...