установка PyQt5 в Windows 7

Я написал программу на Python 3.4 и хочу сделать для нее графический интерфейс. Я обнаружил, что PyQt5 - это инструмент для этого.

1) Я скачал и установил бинарный пакет PyQt5 (http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.4.1/PyQt5-5.4.1-gpl-Py3)..4-Qt5.4.1-x32.exe).

2) Я попытался запустить этот пример кода на Python:

import sys
from PyQt5.QtWidgets import QApplication, QWidget


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()

    sys.exit(app.exec_())

Python вернул ошибку:

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\PyQt5.py", line 2, in <module>
    from PyQt5.QtWidgets import QApplication, QWidget
  File "D:\PyQt5.py", line 2, in <module>
    from PyQt5.QtWidgets import QApplication, QWidget
ImportError: No module named 'PyQt5.QtWidgets'; 'PyQt5' is not a package

3) Нашел совет установить QT. Итак, я скачал и установил QT (http://download.qt.io/official_releases/online_installers/qt-opensource-windows-x86-online.exe).

4) Затем я удалил и снова установил бинарный пакет PyQt5. Нет результатов.

Python не возвращает никаких ошибок, если я запускаю:

import PyQt5

Но если я попытаюсь запустить:

from PyQt5.QtWidgets import QApplication, QWidget

Выдает ту же ошибку, что и в начале.

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\PyQt5.py", line 2, in <module>
    from PyQt5.QtWidgets import QApplication, QWidget
  File "D:\PyQt5.py", line 2, in <module>
    from PyQt5.QtWidgets import QApplication, QWidget
ImportError: No module named 'PyQt5.QtWidgets'; 'PyQt5' is not a package

Что я делаю не так?


person User New    schedule 20.04.2015    source источник
comment
включает ли ваш код import sys?   -  person Pynchia    schedule 20.04.2015
comment
Да, он включает import sys. Но это не меняет ситуацию (все равно выдает ту же ошибку), поэтому я не упомянул об этом.   -  person User New    schedule 20.04.2015
comment
Пинчия, я редактировал рассматриваемый код. спасибо, но это не помогает. проблема заключается в импорте QtWidgets или какой-либо другой части PyQt или Qt. И не в последней строке кода.   -  person User New    schedule 20.04.2015
comment
хорошо, тогда он импортирует PyQt5, но жалуется, что это не пакет. Найдите его и убедитесь, что это действительно пакет (т. е. его каталог содержит файл __init__.py )   -  person Pynchia    schedule 20.04.2015
comment
если я правильно вас понял - да. есть каталог c:\Python34\Lib\site-packages\PyQt5\ и в нем есть файл init.py. (с подчеркиванием)   -  person User New    schedule 20.04.2015
comment
но в этом файле (init.py) нет кода: # Copyright (c) Riverbank Computing Limited, 2015 г. ‹[email protected]› # # Этот файл является частью PyQt5. # # Этот файл можно использовать в соответствии с условиями Стандартной общественной лицензии GNU # версии 3.0, опубликованной Фондом свободного программного обеспечения и фигурирующей в # файле ЛИЦЕНЗИЯ, включенном в упаковку этого файла. Пожалуйста, ознакомьтесь # со следующей информацией, чтобы убедиться, что Стандартная общественная лицензия GNU ......   -  person User New    schedule 20.04.2015
comment
да ничего в нем содержать не надо. Но это делает PyQt5 пакетом. Тогда это довольно странное поведение. На вашем месте я бы начал установку с нуля.   -  person Pynchia    schedule 20.04.2015
comment
Не называйте файл программы так же, как имя пакета. Вы пытаетесь импортировать свой собственный файл D:\PyQt5.py   -  person qwm    schedule 20.04.2015
comment
ТЫ ПРАВ!!!!!! )))))))) Спасибо!!!! Я изменил имя файла, и это сработало! (как отметить свой комментарий как ответ?)   -  person User New    schedule 20.04.2015
comment
ну теперь можно отметить ответ -)   -  person qwm    schedule 20.04.2015


Ответы (2)


Как указано в документации Python, каталог, содержащий входной скрипт предшествует всем остальным путям поиска, если только список sys.path не изменен.

И ваш каталог D:\ уже содержит модуль PyQt5, который импортируется. Попытка импортировать подмодуль QtWidgets из вашего модуля, который не является пакетом, приводит к следующей ошибке:

File "D:\PyQt5.py", line 2, in <module>
  from PyQt5.QtWidgets import QApplication, QWidget
ImportError: No module named 'PyQt5.QtWidgets'; 'PyQt5' is not a package

Поэтому не называйте файл программы так же, как имя пакета.

person qwm    schedule 20.04.2015

Для гуглов это то, что решило мою проблему:

Вам нужно убедиться, что вы импортируете sys и используете правильный регистр для команды импорта.

import sys
from PyQt5 import QtGui

Это правильный регистр строки PyQt5. Это заняло у меня некоторое время, чтобы понять.

person bgStack15    schedule 08.08.2016