py2exe Bundle=1 Сбой приложения. Ткинтер

У меня проблемы с упаковкой моего скрипта с помощью py2exe. Он отлично работает с Bundle=3, но мне нужно приложение, которое может работать полностью автономно без дополнительных файлов.

Система:

  • Win7x86

  • Питон 2.7

  • Последний py2exe

В своем приложении я использую следующие библиотеки: «Tkinter», «ttk», «time», «tkFont», «urllib2», «md5», «sys», «os», «hid».

Это мой сценарий установки:

from distutils.core import setup
import py2exe
DATA_FILES = []

APP = [{'script': 'app.py',
        'name': 'app',
        'icon_resources': [(1, 'icon.ico')]
        }]

OPTIONS = {'py2exe':{
'includes':['Tkinter','ttk','time','tkFont','urllib2','md5','sys','os','hid',"encodings", "encodings.*"],
'bundle_files': 1,
'dist_dir': './Win_Build/',
'compressed': 1,
'optimize': 1,
"dll_excludes": ['C:\\Python27\\tcl\\tcl8.5\\init.tcl',"C:\\\\Python27\\DLLs\\tcl85.dll", "C:\\\\Python27\\DLLs\\tk85.dll","C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*"]
}}


setup(
    windows=APP,
zipfile=None,
options=OPTIONS,
data_files=DATA_FILES,
version="2.0.0.0",
)

Проблема в том, что когда я запускаю приложение, все, что я получаю: «Приложение перестало работать, Windows может проверить в Интернете…».

Я пробовал несколько различных предложений, которые я нашел в Интернете, но все они либо приводят к неавтономному приложению и все равно не запускаются, либо вообще ничего не меняется в каталоге сборки.

Спасибо,

РЕДАКТИРОВАТЬ: я бы хотел по возможности избегать использования pyInstaller.

From: отображение окна Python py2exe (tkinter)

Измененная dll исключает, а data_files...

"dll_excludes": []
DATA_FILES = ['C:\\Python27\\DLLs\\tcl{0}.dll'.format(TCL_VERSION.replace('.','')),'C:\\Python27\\DLLs\\tk{0}.dll'.format(TK_VERSION.replace('.',''))]

К сожалению, это не имеет никакого эффекта.


person theshadow124    schedule 03.01.2014    source источник


Ответы (1)


в ссылке написано: Добавить "dll_excludes": ["tcl85.dll", "tk85.dll"] и скопировать dll вручную.

person mmm    schedule 27.05.2014
comment
Большое спасибо, это, кажется, решило мою проблему! - person theshadow124; 04.06.2014
comment
Извините, сказал слишком рано, после очистки и восстановления он больше не работает. - person theshadow124; 04.06.2014
comment
теперь я получаю следующую ошибку: Traceback (most recent call last): File "test.py", line 6, in <module> File "zipextimporter.pyc", line 82, in load_module File "Tkinter.pyc", line 38, in <module> File "zipextimporter.pyc", line 82, in load_module File "FixTk.pyc", line 65, in <module> File "zipextimporter.pyc", line 98, in load_module ImportError: MemoryLoadLibrary failed loading _tkinter.pyd - person theshadow124; 04.06.2014
comment
Есть ли способ правильно включить tcl85.dll, tk85.dll, чтобы программа могла быть автономной, поскольку в этом смысл py2exe? - person theshadow124; 04.06.2014