Стандартный ответ копирования GTK + 's бен, и т.д., доля и каталог Lib в DIST каталог проекта является правильным (но я вижу, кто-то варварски [1] и бин отсутствует в списке), после того, как все:
- PyGTK не более чем тонкий слой клея делает GTK + доступен на Python
- PyGObject не более чем тонкий слой клея делает GObject, ПИБ, ... доступно для Python
- PyCairo не более чем тонкий слой клея делает Каир доступны для Python
Как минимум, вам нужно все три из этих привязок пакетов и из-за их природе они бесполезны, если базовая платформа не является доступные (.dll файлы, конфигурационные файлы, словом: весь shebang). Вот почему GTK + bin, etc, share и lib необходимо скопировать в каталог dist вашего проекта.
Отредактированный фрагмент setup.py, который я опубликовал пару лет назад, [1], но тонко неполный. Правильная версия должна быть:
from distutils.core import setup
import py2exe
setup(
name = 'handytool',
description = 'Some handy tool',
version = '2.0',
zipfile = 'bin/library.zip',
windows = [{'script': 'handytool.py',
'dest_base': 'bin/handytool'}
],
options = {'py2exe': {'packages':'encodings',
'includes': 'glib, gio, gobject, cairo, atk, pango, pangocairo, gtk'}
}
)
Обратите внимание на значения для ZipFile и dest_base. С этими опциями ваш .exe, пучок .pyd-файлов и library.zip создаются в каталоге директории dist/bin py2exe. Затем, когда вы копируете каталоги GTK + в каталог dist2exe , ваш исполняемый файл живет рядом с libgtk-win32-2.0.0.dll и другими , как и должно быть. Если вы не сделаете это выше, неправильно сконфигурированная переменная PATH может помешать работе с (иногда несовместимыми) DLL-файлами ваших загрузочных нагрузок py2exe'd .
Итак, для вышеуказанной настройки.пй файл, правильная структура каталогов дист должна выглядеть следующим образом:
bin/handytool.exe
bin/library.zip
bin/*.pyd (all .pyd files py2exe deemed needed)
bin/* (complete copy of GTK+ runtime bin dir)
etc/* (complete copy of GTK+ runtime etc dir)
share/* (complete copy of GTK+ runtime share dir)
lib/* (complete copy of GTK+ runtime lib dir)
Когда вы выше работает правильно, то вы увидите, что образы загрузки просто работает, и вы можете начать думать о выходе из некоторых частей доля/(например, файлы перевода вы не хотите/должны) и т.д.
MVG, Dieter
[1] http://www.py2exe.org/index.cgi/Py2exeAndPyGTK
Редактировать 2011/07/05: исправлена опция включения для PyGObject 2.28/PyGTK 2.24. Если вы используете только PyGObject 2.28, опция includes имеет , чтобы содержать «glib, gio, gobject». Если вы используете PyGTK, тогда ему нужны: 'glib, gio, gobject, cairo, atk, pango, pangocairo, gtk'.
Я не уверен, но я подозреваю, что вам нужно будет установить gtk-2.0 в систему. http://www.gtk.org/download-windows.html –
@Aaron, gtk-2.0 установлен в системе. –