1

Тема: Встановлення PyQt4 на Ubuntu

Доброго часу доби.

Встановлення PyQt під вінду - справа на кілька кліків: готовий інсталлятор спрощує все. З Лінуксом трохи складніше: інакший підхід та свої граблі. Тож дана замітка присвячена опису встановлення PyQt під Лінуксом.

Перед тим, як стрімголов кинутися в мануал з інсталляції, варто розібратися з тим, що саме ми хочемо поставити:

  • Що ставимо? - реалізацію бібліотеки Qt на Python;

  • Куди ставимо? - у віртуальне середовище (якщо бібліотека не знадобиться для інших проектів) або глобально;

  • Чи є залежності перед інсталляцією? - так, є: кілька пакетів + SIP.

З можливих питань наводжу невелике FAQ.

Віртуальне середовище

Віртуальне середовище (virtual environment) являє собою “локальну копію” існуючого середовища, адаптовану до певних вимог. У нашому випадку це робиться наступним чином:

 

  • Каталог з інтерпретатором Пітона та його основними модулями копіюється до потрібного нам каталогу;

  • У середовищі поточного сеансу перезадаються певні змінні (PATH, PYTHONHOME, etc) для визначення нового місцерозташування скопійованих каталогів.

  • Запускається деякий скрипт, який задає потрібні значення змінним середовища;

  • Після завершення роботи викликається інший скрипт, який повертає старі значення змінних середовища.

Додаткові пакети

$ sudo apt-get install qt4-qmake python-virtualenv
 
# The next one may cause troubles with dependencies
# If so - use
# $ sudo dpkg -f install
# afterwards
 
$ sudo apt-get install python-dev

SIP

SIP – це інструмент, необхідний для налаштування PyQt. Зауважу, що у Windows його окремо ставити не вимагалося.
   

Річкобанк написав:

SIP is a tool that makes it very easy to create Python bindings for C and C++ libraries. It was originally developed to create PyQt, the Python bindings for the Qt toolkit, but can be used to create bindings for any C or C++ library.

Отже, переходимо до процесу встановлення бібліотеки.

Створення віртуального середовища

Попередньо слід створити каталог для проекту, у межах якого ви хочете створити віртуальне середовище.

# Create the environment
 
$:~ /work/venv$ virtualenv venv
New python executable in venv/bin/python
Installing setuptools, pip...done.
 
# Create directory for the future installation archives
$:~ /work/venv$ mkdir repo
$:~ /work/venv$ cd repo
 
# Activate the virtual environment
$:~ /work/venv$ . venv/bin/activate
(venv)$

(venv) означає, що ми працюємо у новому оточенні (себто - у віртуальному середовищі). Виконавши команду

(venv)$ env

можна пересвідчитися у цьому.
Каталог з інтерпретатором Пітона та потрібними модулями лежатиме у каталозі вашого проекту.

Встановлення SIP

# Get the archive with wget
(venv)$:~ /work/venv/repo$ wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.16.5/sip-4.16.5.tar.gz
 
# Unpack the archive
(venv)$:~ /work/venv/repo$ tar -xvf sip-4.16.5.tar.gz
# <Here would be a lot of output - we just skip it for now...>
 
# Run the configuration process
(venv)$:~ /work/venv/repo$ cd sip-4.16.5/
 
# Please check the output of the next command!
# Ensure that you see you VIRTUALENV-oriented directories, not the basic
# system folders (like /usr/bin, etc).
# There might have happened if you forgot to switch to virtual environ-t.
(venv)$:~ /work/venv/repo/sip-4.16.5$ python configure.py


# If everything is OK - just run 'make'
(venv)$:~ /work/venv/repo/sip-4.16.5$ make
# Attention: here we need SUDO, as this command will place some files
# (sip.h, etc) into some of system folders
(venv)$:~ /work/venv/repo/sip-4.16.5$ sudo make install
 

Встановлення PyQt4

Тут наведено один із можливих способів.

# Get the archive with PyQt4
(venv)$:~ /work/venv/repo$ wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.3/PyQt-x11-gpl-4.11.3.tar.gz
 
# Unpack the archive
(venv)$:~ /work/venv/repo$ tar -xvf PyQt-x11-gpl-4.11.3.tar.gz
 
# Take a look into the README file: it is recommended.
(venv)$:~ /work/venv/repo$ cd PyQt-x11-gpl-4.11.3/
(venv)$:~ vim README

###########################################################
(venv)$:~ /work/venv/repo/PyQt-x11-gpl-4.11.3$ python configure-ng.py

Якщо на виході ви отримали отаке:

Querying qmake about your Qt installation...
Determining the details of your Qt installation...
Error: Failed to determine the detail of your Qt installation. Try again using
the --verbose flag to see more detail about the problem.

то вирішення проблеми буде наступним...

(venv)$:~ /work/venv/repo/PyQt-x11-gpl-4.11.3$ python configure-ng.py --verbose
Querying qmake about your Qt installation...
Determining the details of your Qt installation...
/usr/bin/qmake -o qtdetail.mk qtdetail.pro
make -f qtdetail.mk
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4 -I. -o qtdetail.o qtdetail.cpp
qtdetail.cpp:1:28: fatal error: QCoreApplication: No such file or directory
#include <QCoreApplication>
^
compilation terminated.
make: *** [qtdetail.o] Error 1
Error: Failed to determine the detail of your Qt installation. Try again using
the --verbose flag to see more detail about the problem.
 
#####################################################################
 
# Well, as we do not have it yet - we must install it now...
# About 51.2 MB, it is
(venv)$:~ /work/venv/repo/PyQt-x11-gpl-4.11.3$ sudo apt-get install libqt4-dev
 
# After this, repeat configuring
(venv)$:~ /work/venv/repo/PyQt-x11-gpl-4.11.3$ python configure-ng.py
Querying qmake about your Qt installation...
Determining the details of your Qt installation...
This is the GPL version of PyQt 4.11.3 (licensed under the GNU General Public
License) for Python 2.7.6 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

Якщо попередні кроки пройшли успішно - збираємо бібліотеку:

(venv)$:~ /work/venv/repo/PyQt-x11-gpl-4.11.3$ make
 
# And again SUDO
(venv)$:~ /work/venv/repo/PyQt-x11-gpl-4.11.3$ sudo make install

Врешті-решт, слід перевірити, чи поставилася наша бібліотека. Для цього у віртуальному середовищі просто спробуємо імпортувати потрібний модуль в інтерактивному режимі:

(venv)$:~ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from PyQt4.QtGui import QMainWindow
>>>

Епілог

Усі попередні кроки, однак, можна автоматизувати. Що, власне, і пропонується наступними скриптами, доступними на гітхабі:

Інсталляційний скрипт
Скрипт очищення середовища (якщо ви його недоналаштували).

Ці скрипти є дещо оптимальнішими за наведений у статті варіант, тому для автоматизації процесу раджу використовувати саме їх.

Усі питання по темі - прошу у коменти. :)

Повний варіант статті-оригіналу див. тут.

I belong to the Dead Generation.
Подякували: Chemist-i, Q-bart, 0xDADA11C7, Replace, leofun015

2

Re: Встановлення PyQt4 на Ubuntu

Преший раз читаю щоб під віндовс з python менше проблем.

Junior Django Developer

3

Re: Встановлення PyQt4 на Ubuntu

Blast написав:

Преший раз читаю щоб під віндовс з python менше проблем.

Для того, щоб підняти Пітон+PyQt4+SciPy+Matplotlib, знадобилося просто скачати і проінсталлити відповідні інсталлятори, тому у цьому плані там було простіше. Що, однак, не додає плюсів до карми самій Windows-for-Python.

I belong to the Dead Generation.

4

Re: Встановлення PyQt4 на Ubuntu

Впевнений, що стаття комусь полегшить встановлення цих інструментів, але викладайте ще й свої напрацювання в Пітон+PyQt4+SciPy+Matplotlib, бо один лише Слабінога написав гарну статтю на цю тему - Пайтон в наукових дослідженнях

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»
Подякували: leofun011

5

Re: Встановлення PyQt4 на Ubuntu

0xDADA11C7 написав:

Впевнений, що стаття комусь полегшить встановлення цих інструментів, але викладайте ще й свої напрацювання в Пітон+PyQt4+SciPy+Matplotlib, бо один лише Слабінога написав гарну статтю на цю тему - Пайтон в наукових дослідженнях

У мене була наукова робота, у якій модулі NumPy, SciPy, Matplotlib юзалися для побудови порівняльних гістограм (власне, для тієї роботи я і піднімав усе це добро). Зараз я ту роботу вирішив переробити до більш юзабельного вигляду, плюс, мо, допиляти щось нове (ECTS в Україні помер, але його мутанти-клони в освіті присутні).

Та, статтю Слабіноги пам'ятаю. :) Шкода, що вона була єдиною з можливого циклу.

I belong to the Dead Generation.