2014-11-12 4 views
1

У меня есть проект в Python 3.4 и GTK + 3. Я нахожусь в Windows XP SP3 32-bit (VirtualBox).Не могу включить gi.repository.Gtk в py2exe

Мне нужно скомпилировать исполняемый файл с помощью py2exe. (НЕ предлагайте cx_freeze. Он имеет в десять раз больше проблем в этом проекте, чем py2exe).

My setup.py выглядит следующим образом.

#!/usr/bin/python 

from setuptools import setup 
import py2exe 

setup(name="Redstring", 
    version="2.0", 
    description="REDundant STRING generator", 
    author="MousePaw Labs", 
    url="http://www.mousepawgames.com/", 
    maintainer_email="[email protected]", 
    data_files=[("", ["redstring.png", "redstring_interface.glade"])], 
    py_modules=["redstring"], 
    windows=[{'script':'redstring.py'}], 
    options={"py2exe":{ 
     "unbuffered": True, 
     "compressed":True, 
     "bundle_files": 1, 
     'packages':['gi.repository'], 
     }}, 
    zipfile=None 
    ) 

Когда я запускаю его через C:\Documents and Settings\Jason\Desktop\redstring2>python setup.py py2exe, я получаю следующий результат (в полном объеме).

running py2exe 
running build_py 

    1 missing Modules 
    ------------------ 
? gi.repository.Gtk     imported from __SCRIPT__ 
Building 'dist\redstring.exe'. 

C:\Documents and Settings\Jason\Desktop\redstring2> 

Реальный сценарий, redstring.py, работает без заминки в моей среде Windows. В этом случае у меня есть следующая (рабочая) строка кода: from gi.repository import Gtk Это ВСЕ, которые я импортирую из gi.repository во всем проекте.

Если я поменяю строку в файле setup.py на 'packages':['gi'],, выход ошибки переключится на около 24-некоторых нечетных модулей, все из которых принадлежат gi.repository. Если я попытаюсь импортировать «Gtk» или «gi.repository.Gtk» в 'packages': или 'includes':, я получаю сообщение об ошибке, что импортируемый файл не может быть найден.

Сегодня я провел восемь часов на #python (канал IRC), и никто не смог это решить. На этой неделе мне понадобится пакет для двоичного кода Windows.

ПРИМЕЧАНИЕ: This question не является дубликатом; в то время как это аналогичная проблема, это а) не то же сообщение об ошибке, и б) ни один ответ не решает вопрос каким-либо образом.

ответ

1

Я решил это, прежде всего, с понижением до Python 2.7. (GTK + 3.8 по-прежнему хорошо.) Py2exe по-видимому, имеет проблемы с Python 3.

Во-вторых, я переключился ...

options={"py2exe": { 
    "bundle_files": 1, 
} 

в

options={"py2exe": { 
    "bundle_files": 3, 
} 

По какой-то причине, py2exe не может включать в себя определенные файлы, необходимые для запуска библиотеки gi, когда 'bundle_files' установлено на 1 или 2.

Полный файл setup.py, который работает с py2exe для моего проекта, находится на GitHub. Я запускаю его на cmd с python setup.py py2exe.