【问题标题】:How do I compile QScintilla and Eric6 on Linux?如何在 Linux 上编译 QScintilla 和 Eric6?
【发布时间】:2015-08-24 04:01:17
【问题描述】:

首先我通过以下步骤安装 QScintilla:

1:

cd Qt4Qt5
qmake qscintilla.pro
sudo make
make install

2:

cd ../designer-Qt4Qt5
qmake designer.pro
sudo make
sudo make install

3:

cd ../Python
python3 configure.py --pyqt=PyQt5
sudo make

在这里我遇到了问题:

QAbstractScrollArea: No such file or directory 

和问题:

qprinter.h: No such file or directory

但我最终通过手动添加所需文件解决了它们。

继续:

sudo make install

4:

然后我输入以下内容来安装 eric6:

sudo python3 install.py

但我得到了:

检查依赖关系

Python 版本:3.4.0

找到 PyQt5

对不起,请安装 QScintilla2 和 它的 PyQt5/PyQt4 包装器。

错误:/usr/lib/python3/dist-packages/PyQt5/Qsci.so:未定义符号:_ZTI13QsciScintilla

【问题讨论】:

    标签: linux compilation pyqt pyqt5 qscintilla


    【解决方案1】:

    主要问题是您链接的是 Qt4 而不是 Qt5。这就是为什么QAbstractScrollAreaQPrinter 标头被报告为缺失,以及为什么您稍后会收到undefined symbol 错误的原因。

    QScintilla 使用功能文件来控制编译时配置,并且它的源代码需要修补才能为 Qt5 获得良好的构建。

    所以首先解压缩一组新的源代码,然后进行这些更改:

    designer-Qt4Qt5/designer.pro

    TARGET = qscintillaplugin_qt5
    

    Qt4Qt5/features/qscintilla2.prf

            } else {
                LIBS += -lqscintilla2_qt5
            }
        }
    } else {
        LIBS += -lqscintilla2_qt5
    }
    

    Qt4Qt5/qscintilla.pro

    TARGET = qscintilla2_qt5
    ...
    features.path = $$[QT_INSTALL_ARCHDATA]/mkspecs/features
    

    这将确保您获得独立的 Qt5 qscintilla 库。

    完成后,按照以下步骤构建(作为普通用户):

    cd 'path/to/src/Qt4Qt5'
    
    # this is essential for correct linking
    export QMAKEFEATURES="$PWD/features"
    
    # make sure you use the right qmake!
    qmake-qt5 'qscintilla.pro'
    make
    
    # plugin for Qt5 Designer
    cd '../designer-Qt4Qt5'
    qmake-qt5 'designer.pro' INCLUDEPATH+='../Qt4Qt5' QMAKE_LIBDIR+='../Qt4Qt5'
    make
    
    # Python bindings
    cd '../Python'
    python3 'configure.py' --pyqt='PyQt5' --qmake='/usr/bin/qmake-qt5' \
            --qsci-incdir='../Qt4Qt5' --qsci-libdir='../Qt4Qt5'
    make
    

    如果成功,您可以安装所有内容(以 root 身份):

    cd 'path/to/src/Qt4Qt5'
    make install
    
    cd '../designer-Qt4Qt5'
    make install
    
    cd '../Python'
    make install
    

    【讨论】:

    • 最后我解决了这个问题,但之后又出现了更多问题。我在/opt下安装了Qt5.4.1,但是from PyQt5 import QtCore;print(QtCore.QT_VERSION_STR)的版本是5.2.1,你能告诉我如何让python使用/opt文件下的版本吗?
    • @Zieng。请参阅我的回答中的评论:“确保使用正确的 qmake!”。编译时需要指定/opt下安装的qmake的全路径。
    • 现在我的问题是我无法构建正确的 QtSql.so。我认为这与 QScintilla2 无关,因为当我安装 eric6 时它说“找到 QScintilla2”,而这与 qmake 版本无关,因为当我构建 PyQt5 或安装 Qt5 时,我什至没有使用 qmake。所以,我要解决的是找出如何构建正确的 QtSql.so.@ekhumoro
    • @ekhumoro。最后我通过删除所有旧版本并重新安装所有最新版本解决了所有问题。非常感谢!
    【解决方案2】:

    ekhumoro's solution above 不太适合我 - 让我们说也许我错过了一些东西,或者这是一个特定于环境的东西。

    无论如何....我按照 ekhumoro 的建议做了 除了没有编辑这三个文件:(XXX)

    - designer-Qt4Qt5/designer.pro
    - Qt4Qt5/features/qscintilla2.prf
    - Qt4Qt5/qscintilla.pro
    

    编辑它们的原因似乎很合理,但最终 Eric 安装失败:

    Sorry, please install QScintilla2 and its PyQt5/PyQt4 wrapper.
    Error:     
    dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PyQt5/Qsci.so, 2):
    Library not loaded: libqscintilla2_qt5.12.dylib
                                      ^^^^
    Referenced from: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PyQt5/Qsci.so
    Reason: image not found
    

    注意标有 ^^^^ 的 _qt5 - 理论上应该可以解决,但对我来说没有。我尝试了各种方法都无济于事。可能是我对某些设置的无知。

    我预计 ekhumoro 的说明会起作用,因为建议对 3 个文件进行编辑 - 请参阅 (XXX) - 配置 Make 以使用 _qt5 创建库。 我尝试了很多东西 - 符号链接等,但归根结底,省略 (XXX) 可以让一切正常进行。

    所以 - 总之,*如果您不需要让 QScintilla 与 PyQt4 PyQt5*同时工作,请按照 ekhumoro 的建议减去 (XXX) 处的内容- 这样,Eric 应该可以毫无问题地安装。

    请注意以上信息:它可能会破坏 Qt4 的 QScintilla 库

    【讨论】:

      【解决方案3】:

      我想最重要的是--pyqt=PyQt5,这导致使用sip/qscimod5.sip 而不是sip/qscimod4.sip。不同之处在于它包含%Import QtWidgets/QtWidgetsmod.sip 行,这对于QAbstractScrollArea 是必不可少的。

      【讨论】:

        猜你喜欢
        • 2016-10-26
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        • 2013-06-30
        • 2013-02-03
        • 2012-01-25
        • 1970-01-01
        相关资源
        最近更新 更多