Проблемы при сборке с использованием скрипта Turtle

Поэтому я играл с Python и тестировал его на других компьютерах, используя cx-freeze, чтобы превратить мой скрипт Python в исполняемый файл.

Недавно я научился пользоваться модулем Turtle и использовал его в своем скрипте. Я протестировал свой скрипт, и он отлично работал, но когда я превратил его в исполняемый файл, он не открывается.

# TURTLE TEST
import time
from turtle import *
pen1 = Pen()
title('ILLUMINATI')

pen1.screen.bgcolor('#FFFFFF')

pen1.color('#000000')
pen1.up()
pen1.goto(-100, 200)
pen1.down()
pen1.begin_fill()
for i in range(3):
    pen1.fd(200)
    pen1.left(360/3)
pen1.end_fill()
pen1.up()
pen1.goto(0, -100)
write("ILLUMINATI", False, align='center',font=('Times', 50, 'bold'))
done()

person Fabrizio Torres    schedule 14.09.2014    source источник
comment
Как выглядит ваш код? Как вы настроили и вызвали cx-freeze? Какой результат выдал cx-freeze при компиляции скрипта? Сейчас трудно сказать, в чем проблема, так как это может быть что угодно. (Чтобы добавить дополнительную информацию к сообщению, нажмите «Изменить» в левом нижнем углу.)   -  person Michael0x2a    schedule 14.09.2014
comment
@ Michael0x2a у него не было проблем при сборке, но когда я тестировал exe, появилась командная строка и исчезла. Я попытался понять, в чем проблема, и я думаю, что это модуль черепахи. я запустил этот короткий скрипт, используя черепаху   -  person Fabrizio Torres    schedule 14.09.2014
comment
Попробуйте запустить исполняемый файл из командной строки, и ошибка должна оставаться достаточно долго, чтобы ее можно было прочитать.   -  person Thomas K    schedule 15.09.2014


Ответы (2)


Чтобы увидеть, что происходит, оберните весь код следующим образом:

try:
    <your code>
except BaseException:
    import sys, traceback
    traceback.print_exc(file=sys.stderr)
    input"dummy propmt")

Это предполагает, что sys.stderr подключен к окну консоли, которое вы видели (а может и не быть). Оператор ввода должен поддерживать активность процесса и видимость окна. Если нет, откройте и распечатайте файл на диске (и удалите input()) или посмотрите мой ответ на другой вопрос о том, как для отображения в окне tkinter. В последнем случае вам может понадобиться root.mainloop(), чтобы поддерживать процесс в рабочем состоянии.

person Terry Jan Reedy    schedule 14.09.2014

Я написал setup.py следующим образом:

from cx_Freeze import setup, Executable

setup(version="1.0",
      executables=[Executable(script="turtle_test.py",
                              base="Win32GUI",          
                              targetName="turtle_test.exe",
                              )]
      )

Затем я запустил это так: c:\Python34\python.exe setup.py build

У меня исполняемый файл работает нормально, просто помните, что вы должны сохранить все файлы и каталоги с зависимостями:

tcl\
tk\
_bz2.pyd
_ctypes.pyd
_tkinter.pyd
library.zip
python34.dll
tcl86t.dll
tk86t.dll
turtle_test.exe
unicodedata.pyd

Мои версии Python, ОС и библиотеки:

OS: Windows-7-6.1.7601-SP1 (32bit)
Python: 3.4.1
cx_Freeze: 4.3.3
person Fenikso    schedule 16.09.2014