Как установить PyGTK/PyGobject в Windows с помощью Python 2.6?

У меня есть приложение, которое зависит от PyGTK, PyGobject и PyCairo, которые я создал для работы в Linux. Я хочу передать его в окна, но когда я выполняю import gobject, я получаю следующее:

Traceback (most recent call last):
    import gobject
  File "C:\Python26\lib\site-packages\gtk-2.0\gobject\__init__.py", line 30, in <module>
    from gobject.constants import *
  File "C:\Python26\lib\site-packages\gtk-2.0\gobject\constants.py", line 22, in <module>
    from _gobject import type_from_name
ImportError: DLL load failed: The specified procedure could not be found.

Это, по-видимому, вызвано отключением коммутатора от MinGW до Microsoft Visual Studio, как описано Python Bug 3308 (closed: wontfix).

Есть ли способ установить PyGTK/PyGObject таким образом, который будет работать с Python 2.6 в Windows, не перекомпилируя тот или иной источник?

Ответ 1

У меня он работает нормально, и это не сильно беспокоило меня, поэтому мы знаем, что это можно сделать...

Имейте в виду, что вам, вероятно, понадобится все следующее, установленное на вашей машине Windows:

Я подозреваю, в вашем случае, что библиотеки PyGTK не находят ваш каталог GTK + Runtime, где находятся библиотеки DLL. У вас должна быть переменная окружения GTK_BASEPATH, установленная в каталог вашего GTK + Runtime (обычно C:\GTK).

Также см. PyGTK-on-Windows FAQ

Теперь, если вы пытаетесь скомпилировать PyGTK'ed Python с Py2EXE, это немного сложнее, но это также можно сделать...

Ответ 2

Недавно был обновлен инсталлятор "все-в-одном" PyGTK:

http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/

Это установит PyGTK, PyGObject, PyCairo, PyGtkSourceView2, PyGooCanvas, PyRsvg, gtk + -bundle и Glade. Это абсолютно все, что нужно, чтобы иметь возможность успешно import gobject, import gtk и т.д., Без проблем с DLL.

Ответ 5

Соблюдайте осторожность при установке пакета пакетов PyGTK, если кто-либо, планирующий запустить PyGTK через встроенный интерпретатор, и код C/С++ уже использует GTK. Пакет пакетов PyGTK не добавляет его время выполнения GTK в PATH.

В таком случае, возможно, код C возьмет GTK из PATH (возможно, вы уже установили пакет пакетов GTK), а Python будет использовать отдельный набор библиотек времени исполнения GTK.

Поэтому в моем случае графический интерфейс C GUI или Python использовался для правильной работы и использовался для конфликта во время работы.

Поскольку я использую Psychopy в качестве моей базовой коллекции python, для решения этой проблемы я только что установил PyGTK PyGTK, Pycairo, Pygobject поверх Psychopy.

Помимо использования только одного набора времени выполнения GTK мне пришлось инициализировать GTK в моем C-коде через PyGTK (не gtk_init (& argc, & argv) в моем C-коде) после инициализации интерпретатора python.