如何在Linux上编译QScintilla和Eric6?

时间:2015-06-09 11:06:46

标签: linux compilation pyqt pyqt5 qscintilla

首先我按照以下步骤安装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

3 个答案:

答案 0 :(得分:3)

主要问题是你是在连接Qt4而不是Qt5。这就是为什么QAbstractScrollAreaQPrinter标题被报告为丢失的原因,以及为什么稍后会出现undefined symbol错误。

QScintilla使用功能文件来控制编译时配置,需要对其源代码进行修补以获得Qt5的良好构建。

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

<强>设计者Qt4Qt5 / designer.pro

TARGET = qscintillaplugin_qt5

<强> Qt4Qt5 /特征/ 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

答案 1 :(得分:0)

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创建库。 我尝试了很多东西 - 符号链接,etcetc。,但在一天结束时,遗漏(XXX)允许一切正常进行。

所以 - 总而言之, *如果您不需要让QScintilla与PyQt4 PyQt5 * 同时工作,请执行ekhumoro的建议减去在(XXX)的东西 - 这样,Eric应该没有问题安装。

注意上面的信息:它可能会破坏Qt4的QScintilla libs

答案 2 :(得分:0)

我想最重要的是--pyqt=PyQt5导致使用sip/qscimod5.sip代替sip/qscimod4.sip。区别在于它包含对%Import QtWidgets/QtWidgetsmod.sip至关重要的行QAbstractScrollArea