Python, PyQt установка из исходников

В этой статье описан способ установки PyQt/Qt версии иной, чем используемая в системе, например для нужд разработки . Базовая система - Linux/Ubuntu

Введение

Наверное в любом дистрибутиве Linux можно при помоще менджера пакетов установить среду разработки/исполнения скриптов графического интерфейса PyQt. Однако иногда возникает необходимость работы с другой версией PyQt, например если нужно использовать самую свежую версию, или наоброт, более старую, чем в дистрибутиве.

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

Нам нужно установить три компонента:

  1. QT SDK (только установка)
  2. SIP (Компиляция и установка)
  3. PyQt (Компиляция и установка)

Устанавливаем Qt

Скачиваем с сайта файл qt-sdk-linux-x86-opensource-2010.05.1.bin

Запускаем инсталлятор:

  chmod 755 qt-sdk-linux-x86-opensource-2010.05.1.bin
  ./qt-sdk-linux-x86-opensource-2010.05.1.bin

Добавляем переменные окружения в стартовые скрипты. Можно добавить в .bashrc :

1 export PATH=${HOME}"/qtsdk-2010.05/bin:"$PATH
2 export PATH=${HOME}"/qtsdk-2010.05/qt/bin:"$PATH

Если нужно работать с несколькими версиями Qt, например с установленной в системе и вновь установленной, можно сделать файл .qtrc с таким же содержанием и перед сеансом работы с новой версией QT выполняем:

  source ~/.qtrc

Устанавливаем SIP

Создаем директории

1 #! /bin/bash
2 
3 mkdir -p ${HOME}/qt_pyqt/bin
4 mkdir -p ${HOME}/qt_pyqt/lib/python2.6/dist-packages
5 mkdir -p ${HOME}/qt_pyqt/include
6 mkdir -p ${HOME}/qt_pyqt/share/sip
7 
8 exit 0

Конфигурируем компиляцию SIP

 1 #! /bin/bash
 2 
 3 cd sip*
 4 python configure.py \
 5 -b ${HOME}/qt_pyqt/bin \
 6 -d ${HOME}/qt_pyqt/lib/python2.6/dist-packages \
 7 -e ${HOME}/qt_pyqt/include \
 8 -v ${HOME}/qt_pyqt/share/sip
 9 
10 exit 0

Компилируем и устанавливаем SIP

  cd sip*
  make
  make install

Устанавливаем PyQt

Конфигурируем компиляцию PyQt

 1 #! /bin/bash
 2 
 3 PYTHONPATH=${HOME}"/qt_pyqt/lib/python2.6/dist-packages"
 4 export PYTHONPATH
 5 QTDIR=${HOME}/qtsdk-2010.05/qt
 6 
 7 cd PyQt*
 8 
 9 python configure.py \
10 -b ${HOME}/qt_pyqt/bin \
11 -d ${HOME}/qt_pyqt/lib/python2.6/dist-packages \
12 -v ${HOME}/qt_pyqt/share/sip
13 
14 exit 0

Компилируем и устанавливаем PyQt

  cd PyQt*
  make
  make install

Запуск программ на PyQt

Простейшая тестовая программа на PyQt

Для проверки работы установленного PyQt будем использовать простейшую программу. Запишем в файл hello.py скрипт:

1 #! /usr/bin/python
2 import sys
3 from PyQt4 import QtGui
4 if __name__=="__main__":
5     app = QtGui.QApplication(sys.argv)
6     label = QtGui.QLabel("Hello World!\nThis is the very simple example for PyQt4.")
7     label.show()
8     sys.exit(app.exec_())

Варианты запуска.

Теперь нам нужно, чтобы наши скрипты запускались с использованием нашей версии PyQt. Заодно и проверим, что все работает. Сделать это можно несколькими путями:

  1. Можно в теминале, в котором запускаем наш скрипт, подать команду экспорта переменной PYTHONPATH
  2. Можно сделать скрипт-обертку на Bash, которая выставит PYTHONPATH, а затем запустит наш скрипт на Python.
  3. Можно проэкспортировать наш путь в .bashrc, используя переменную PYTHONPATH
  4. Можно внутри нашего скрипта, написанного на Python, добавить нужный путь к переменной sys.path.

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

Рассмотрим подробнее варианты 1. и 3.

Ручная установка переменной окружения

Запускаем в терминал и набираем в нем команду:

  export PYTHONPATH=${HOME}/qt_pyqt/lib/python2.6/dist-packages

Это все, теперь можно запускать наш скрипт в терминале:

  ./hello.py

Добавление в системный путь внутри на Python

Добавляем в начало нашего скрипта команды добавления пути:

 1 #! /usr/bin/python
 2 
 3 import sys,os
 4 home = os.environ['HOME']
 5 pyqt_path = os.path.join(home,'qt_pyqt/lib/python2.6/dist-packages')
 6 sys.path.insert(0,pyqt_path)
 7 
 8 from PyQt4 import QtGui
 9 if __name__=="__main__":
10     app = QtGui.QApplication(sys.argv)
11     label = QtGui.QLabel("Hello World!\nThis is the very simple example for PyQt4.")
12     label.show()
13     sys.exit(app.exec_())

Опубликовано: November 3, 2010

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


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

Имя:

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