PyCharm не может разрешить PyGObject 3.0, но код работает нормально

Я использую PyCharm 2.5 в Ubuntu 11.10, пытаясь разработать приложение с использованием PyGObject 3.0 на Python 3.2.2. Я установил пакет Ubuntu python3-gobject, и когда я запускаю свой код, он работает именно так, как ожидалось.

Однако PyCharm не может найти ни один из модулей PyGObject. Он говорит Unresolved refrence: 'Gtk', когда я наводил курсор на Gtk в своем операторе импорта, и, конечно, ни одно из автозавершений не работает.

Это мой код:

#!/usr/bin/env python3

from gi.repository import Gtk

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

Я даже пытался создать виртуальную среду Python, а затем установить в нее PyGObject из исходного кода, а затем даже попытался создать символические ссылки из всех файлов .py в site-packages/gi/overrides до site-packages/gi/repository, но все безуспешно.

Любой совет будет принят с благодарностью!


person HOLOGRAPHICpizza    schedule 10.07.2012    source источник


Ответы (2)


В Gtk+ 3 привязки Python к бинарным модулям генерируются динамически с использованием *.typelib баз данных. Динамический импортер для доступа ко всем модулям находится в gi.repository. PyCharm не может обнаружить эти модули с помощью анализа кода, потому что они требуют специальной обработки.

Я отправил запрос функции для этой проблемы: PY-6932. Не стесняйтесь голосовать за него.

person Andrey Vlasovskikh    schedule 10.07.2012
comment
Ах, PyGObject действительно очень причудливый. Проголосовал за вашу функцию, может быть, она когда-нибудь появится! :D - person HOLOGRAPHICpizza; 10.07.2012
comment
Кроме того, поддержит ли это какая-либо другая IDE? Я собираюсь разработать приложение GTK+ 3 среднего размера и хотел бы иметь для этого хорошую IDE. Как будет называться эта функция, чтобы я мог ее искать? - person HOLOGRAPHICpizza; 10.07.2012
comment
Вы можете использовать bpython или bpython3 - person Rufus_12; 17.08.2014
comment
Проблема исправлена. В поддержке говорится: нажмите Alt + Enter на from gi.repository import Gt<caret>k и выберите «Создать заглушки для двоичного модуля», и это сработало! - person Carson Ip; 10.02.2015
comment
Обновите свой ответ решением по адресу: stackoverflow.com/a/33646560/57952. - person Udi; 27.12.2017

Поместите текстовый курсор внутри выделенного красной линией Gtk в:

from gi.repository import Gtk

нажмите Alt + Enter и выберите «Создать заглушки для двоичного модуля».

person Spatz    schedule 11.11.2015