Как использовать buildout для сборки Qt, PyQt и SIP?

#pyqt #buildout

#pyqt #buildout

Вопрос:

РЕДАКТИРОВАТЬ: следующий buildout.cfg работал для сборки Qt, PyQt и SIP

 
[buildout]
parts =
    pyqt

[pyqt]
recipe = zc.recipe.cmmi
url = http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-4.8.4.tar.gz
#shared = True
source-directory-contains = configure.py
configure-command = ${buildout:executable} ./configure.py
configure-options = --confirm-license
    -q ${qt:location}/bin/qmake
    -b ${buildout:parts-directory}/pyqt/bin
    -p ${buildout:parts-directory}/pyqt/plugins
    -d ${buildout:parts-directory}/pyqt/lib/
    -v ${sip:location}/share
    --verbose
environment =
    PYTHONPATH=${sip:location}/lib


[sip]
recipe = zc.recipe.cmmi
url = http://www.riverbankcomputing.co.uk/static/Downloads/sip4/sip-4.12.3.tar.gz
# shared = True
source-directory-contains = configure.py
configure-command = ${buildout:executable} ./configure.py
configure-options = 
    -b ${buildout:parts-directory}/sip/bin
    -e ${buildout:parts-directory}/sip/include
    -d ${buildout:parts-directory}/sip/lib
    -v ${buildout:parts-directory}/sip/share

[qt]
recipe = zc.recipe.cmmi
url = http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.3.tar.gz
shared = True  

Ответ №1:

Я подозреваю, что вам нужно указать PyQt configure, где найти библиотеки sip и включить заголовки:

 [pyqt]
recipe = zc.recipe.cmmi
url = http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-4.8.4.tar.gz
# shared = True
source-directory-contains = configure.py
configure-command = ${buildout:executable} ./configure.py
configure-options = --confirm-license
    -b ${buildout:parts-directory}/pyqt/bin
    -p ${buildout:parts-directory}/pyqt/plugins
    -d ${buildout:parts-directory}/pyqt/lib/
    -q ${qt:location}/bin/qmake
    -v ${sip:location}/share
    --verbose
environment =
    PYTHONPATH=${sip:location}/lib
  

Обновлено: Обновите мой ответ, включив переменную среды PYTHONPATH, чтобы configure.py загрузить правильный модуль sipconfig.

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

1. Извините, тогда у меня закончились идеи; Я вижу ./configure.py у command есть -w (или --verbose ) переключатель командной строки, где он будет выдавать все, что найдет; возможно, вы захотите попробовать это и посмотреть, сможете ли вы получить больше информации.

2. Проблема с configure.py команда для pyqt заключается в том, что она немедленно завершается сбоем даже за пределами buildout. Я даже не могу распечатать справку, не получив эту ошибку.

3. Это действительно проблема! Попробуйте заставить его работать вне buildout (сначала создайте только часть sip с bin/buildout install sip ). Кроме того, не используйте, python ./configure.py а скорее ${buildout:executable} ./configure.py повторно используйте python, используемый для запуска buildout. Я обновил свой ответ (пусть и неправильный), чтобы отразить это.

4. Ага! Я вижу, что configure.py импортирует sipconfig. Бьюсь об заклад, что в вашем системном пути установлен sip, и это всегда будет мешать. Вместо этого используйте python virtualenv или задайте PYTHONPATH, указывающий на местоположение $ {si:location} / lib (или где бы он ни хранил sipconfig.

5. Да, PYTHONPATH был проблемой.