如何使用buildout构建Qt、PyQt和SIP?

5

编辑: 以下的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个回答

2
我猜您需要告诉PyQT配置在哪里找到sip库和包含头文件:

我怀疑您需要告诉PyQT配置程序在哪里查找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模块。

抱歉,我已经没有更多的想法了;我看到./configure.py命令有一个“-w”(或“--verbose”)命令行开关,它会输出它找到的所有内容;你可以尝试一下,看看能否获得更多的见解。 - Martijn Pieters
configure.py命令在pyqt中存在问题,即使不使用buildout也会立即失败。我甚至无法打印帮助信息而不收到错误提示。 - Doran
这确实是个问题!首先尝试在 buildout 之外使其工作(只使用 bin/buildout install sip 构建 sip 部分)。另外,不要使用 python ./configure.py,而是使用 ${buildout:executable} ./configure.py 以重用用于运行 buildout 的 Python。我已经更新了我的答案(虽然错误),以反映这一点。 - Martijn Pieters
我看到configure.py导入了sipconfig。我敢打赌你的系统路径中安装了sip,这将会一直干扰。使用Python虚拟环境或设置PYTHONPATH指向${si:location}/lib位置(或存储sipconfig的任何其他位置)。 - Martijn Pieters
是的,PYTHONPATH 是问题所在。 - Doran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接