ошибка импорта gtk pygtk

#windows #pygtk #importerror

#Windows #pygtk #ошибка импорта

Вопрос:

Я загрузил все, что описано в pygtk , для установки. Все шло нормально, пока, когда я попытался ввести "import gtk" , он не выдал ImportError следующее:

 from gtk import _gtk  
ImportError: DLL load failed: ...(something unreadable)
  

Затем я снова устанавливаю pygtk-2.22.0, возникла та же проблема. Итак, что делать, пожалуйста? Заранее спасибо!

Комментарии:

1. Какую операционную систему вы используете? Как вы установили pygtk? Можете ли вы скопировать и вставить «нечитаемое» сообщение об ошибке. Возможно, кто-то здесь достаточно хорош, чтобы прочитать это и выяснить, в чем проблема.

2. @Mark Byers, я использую японскую систему VISTA, это сообщение было действительно просто для чтения богом, поверьте мне, не могли бы вы, пожалуйста, найти решение? Я устанавливаю, дважды щелкнув pygtk *.exe, и все переместилось, как и предполагалось. Спасибо

3. Двоичным файлам pygtk 2.22 для Windows всего две недели, возможно, с этим проблема. Я использую «старые и стабильные» двоичные файлы (2.16), и все работает нормально. Нечитаемое имя DLL может означать, что «_gtk.pyd» поврежден.

4. У меня была такая же проблема с pygtk-2.24 (все в одном пакете) на 32-разрядном Python 2.7 в Windows. Забавно, что это произошло не тогда, когда я поместил «import gtk» в основной файл python, а только тогда, когда он был в вызванном впоследствии файле python (вероятно, потому, что после того, как импорт сработал, модуль не импортируется дважды). Однако это не объясняет, почему это работает одним способом, а не другим. Подводя итог: проблема все еще существует, однако она может быть еще более странной, чем описано в любом решении здесь.

Ответ №1:

Описываемая вами ошибка обычно вызвана тем, что привязки python (pygtk/ pygobject /pycairo) не могут загрузить dll, необходимую для правильной работы. Большинство этих ошибок вызваны либо:

  • среда выполнения GTK отсутствует в вашей переменной окружения PATH. Это долгое время был совет о том, как заставить pygtk работать в Windows. Пожалуйста, не изменяйте переменную среды user или system PATH, она больше не нужна в установщике all-in-one.
  • в вашей переменной среды PATH указано несколько версий GTK runtime, и первая (крайняя слева) из них несовместима с используемыми вами версиями pygtk / pygobject / pycairo. Вот почему добавление среды выполнения GTK в переменную среды PATH — плохая идея: легко перепутать версии (иногда установщики, связанные с GTK , добавляют свой каталог bin в PATH при установке, который содержит более старую или незавершенную среду выполнения).
  • редкий случай, когда установлен какой-либо программный пакет libintl.dll и iconv.dll в %WINDIR%system или %WINDIR%sytem32

Самый простой способ избежать описанного выше ада dll — это использовать программу установки PyGTK All-in-one (http://download.gnome.org/binaries/win32/pygtk/2.22 /). Она содержит обе привязки Python, среду выполнения GTK и даже Glade и больше не требует изменения переменной среды PATH.

Небольшое предупреждение: если вы решите использовать программу установки «все в одном», вам придется удалить отдельные пакеты pygtk / pygobject / pycairo, которые вы использовали ранее (или у вас будут большие проблемы …)

Комментарии:

1. спасибо, что указали на конфликтующие initl.dll и iconv.dll проблема. Утешайтесь тем, что ваша помощь сыграла важную роль в отсрочке неизбежного нарушения моего рассудка еще на несколько дней.

Ответ №2:

прочитайте исходный код, возможно, существует потребность в конкретной версии pygtk

отредактируйте исходный код для работы с вашей версией pygtk

Комментарии:

1. Привет, прежде всего, спасибо за ответ, я действительно проверил версии и убедился, что они совместимы. Так что в принципе это не могло быть большой проблемой, не так ли??

Ответ №3:

У меня тоже была эта проблема. Вы не упомянули наверняка в своем ответе, поэтому я предложу очевидное (ну … возможно, очевидное для людей, которые использовали его некоторое время). Использовали ли вы следующие три строки кода для импорта? Вы должны использовать их, чтобы импортировать PyGTK.

Я предполагаю, что ваша версия здесь 2.24, как у меня. Если нет, измените ее на имеющуюся у вас версию.

 import pygtk
pygtk.require('2.24')
import gtk
  

Этого должно быть достаточно для импорта gtk.

Ответ №4:

Проблема

Как отмечали другие, не указывайте gtk в path. Я знаю, это заманчиво, и это работает для XYZ, но это (мягко говоря) сбивает с толку. Ад зависимостей достаточно плох на такой платформе, как Linux, которая пытается упростить его для вас.

Для пояснения, что PyGTK All In One делает для вас, так это устанавливает (то, что кажется) полную среду выполнения gtk непосредственно в вашу папку пакетов python, так что, например, в C:PythonLibsite-packagesgtk-2.0runtime

Решение

ПРИМЕЧАНИЕ: %YOURPYTHONPATH% является примером переменной, которая содержит путь к вашей установке Python (например C:Python или C:Python27 или что бы это ни было на самом деле). Я предлагаю установить %PYTHON_DIR% или %PYTHON_PATH%, если вы хотите использовать переменную для этого, поскольку это, скорее всего, будет использоваться другими программами.

Чтобы заставить вашу программу XYZ, требующую GTK, работать, добавьте %YOURPYTHONPATH%Libsite-packagesgtk-2.0runtimebin к ПУТИ при запуске вашей программы; правильные версии DLL, с которыми она должна связать, находятся в этой папке. Все другие среды выполнения GTK , которые я установил (GTK / GTK2-Runetime), выдавали ошибки.

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

диалоговое окно ввода переменных среды Windows

Ответ №5:

После установки pygtk.org пакет, установите каждый из них в следующем порядке:

  • pycairo-1.8.6.win32-py2.6.exe
  • pygobject-2.20.0.win32-py2.6.exe
  • pygtk-2.16.0 glade.win32-py2.6.exe
  • gtk -bundle_2.16.6-20100912_win32.zip

Для получения дополнительной информации:

http://freetstar.com/windows7-pygtk-gtk/

Я получил секунды по ссылке на моем компьютере.