Как настроить PyQt4 для Python 3 в Ubuntu? - PullRequest
26 голосов
/ 30 октября 2011

Этот вопрос первоначально задавался на сайте askubuntu.com, но не привлек к себе внимания, поэтому я думаю, что это лучшее место для обсуждения.

Я установил PyQt4 с синаптиком.

Я использую Python3, поэтому мне нужно настроить путь для PyQt4 в eclipse, но кажется, что Synaptic установил PyQt4 только для Python 2, поскольку я нашел только относительные файлы и папки в Python 2.6 и 2.7.

Так как я могу заставить PyQt4 работать с Python 3 и затмением?

Спасибо.

UPDATE

Я попытался настроить его следующим образом: http://ubuntuforums.org/showthread.php?p=10914908#post10914908

Но после выполнения всех инструкций без каких-либо ошибок в пути, я получаю ошибку при запуске этого кода в python 3.2:

>>> import PyQt4

Сообщение об ошибке:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PyQt4

Но странно то, что один и тот же код не приводит к ошибке в python 2.7 (на моем компьютере установлены версии 2.7 и 3.2)

Ответы [ 3 ]

64 голосов
/ 29 ноября 2013

Вы должны иметь возможность установить Python 3 версию PyQt4 в Ubuntu.Откройте терминал и введите:

sudo apt-get install python3-pyqt4

Таким образом, вам не нужно компилировать Qt4 из исходного кода.Я также проверил это, и pyqt4 работает с python3.

Источник: Быстрый поиск в репозиториях Ubuntu.

29 голосов
/ 01 ноября 2011

Установить пакеты, необходимые для компиляции (я не уверен, что все они необходимы):

sudo apt install build-essential python3-dev libqt4-dev

Загрузить исходные коды последней версии SIP - sip-4.12.4.tar.gz (Linux, UNIX, MacOS / X source).

Распакуйте их и введите каталог:

vic@wic:~/Desktop/sip-4.12.4$ python3 configure.py 
This is SIP 4.12.4 for Python 3.2 on linux2.
The SIP code generator will be installed in /usr/bin.
...
Creating sip module Makefile...

vic@wic:~/Desktop/sip-4.12.4$ make
make[1]: Entering directory `/home/vic/Desktop/sip-4.12.4/sipgen'
...
make[1]: Leaving directory `/home/vic/Desktop/sip-4.12.4/siplib'

vic@wic:~/Desktop/sip-4.12.4$ sudo make install
make[1]: Entering directory `/home/vic/Desktop/sip-4.12.4/sipgen'
...
cp -f /home/vic/Desktop/sip-4.12.4/sipdistutils.py /usr/lib/python3/dist-packages/sipdistutils.py

vic@wic:~/Desktop/sip-4.12.4$

Загрузите исходные коды последней версии PyQt - PyQt-x11-gpl-4.8.5.tar.gz (Linux, UNIX source) и установите его:

vic@wic:~/Desktop/PyQt-x11-gpl-4.8.5$ python3 configure.py 
Determining the layout of your Qt installation...
This is the GPL version of PyQt 4.8.5 (licensed under the GNU General Public License) for Python 3.2 on linux2.

Type '2' to view the GPL v2 license.
Type '3' to view the GPL v3 license.
Type 'yes' to accept the terms of the license.
Type 'no' to decline the terms of the license.
Do you accept the terms of the license? yes
Found the license file pyqt-gpl.sip.
Checking to see if the QtGui module should be built...
...
Checking to see if the dbus support module should be built...
The Python dbus module doesn't seem to be installed.
Qt v4.7.2 free edition is being used.
SIP 4.12.4 is being used.
The Qt header files are in /usr/include/qt4.
...
Creating pyqtconfig.py...

vic@wic:~/Desktop/PyQt-x11-gpl-4.8.5$ make
make[1]: Entering directory `/home/vic/Desktop/PyQt-x11-gpl-4.8.5/qpy'
...
make[1]: Leaving directory `/home/vic/Desktop/PyQt-x11-gpl-4.8.5/designer'

vic@wic:~/Desktop/PyQt-x11-gpl-4.8.5$ sudo make install
make[1]: Entering directory `/home/vic/Desktop/PyQt-x11-gpl-4.8.5/qpy'
...
cp -f PyQt4.api /usr/share/qt4/qsci/api/python/PyQt4.api

Обратите внимание, что я запускаю python3 вместо python.

2 голосов
/ 30 октября 2011

Похоже, что в Ubuntu есть только пакеты pyqt4 для python2, поэтому вам придется скомпилировать отдельный pyqt4 для python3.

Вы можете проверить, что вы уже установили, посмотрев каталог site-packages для каждого питона. Чтобы найти эти каталоги, запустите:

python2.7 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
python3.2 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

Если pyqt установлен правильно, в site-packages должен быть каталог PyQt4, содержащий пару десятков *.so файлов.

Предположительно, для python3.2 там ничего не будет, поэтому вы не можете импортировать pyqt.

Чтобы установить pyqt для python3.2, следуйте этим инструкциям . Обратите внимание, что очень важно настроить сборку, используя правильный python, например:

/usr/bin/python3.2 configure.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...