2015-06-09 16 views
5

Zuerst habe ich installieren qscintilla durch folgende Schritte:Wie kompiliere ich QScintilla und Eric6 unter Linux?

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 

Und hier traf ich das Problem:

QAbstractScrollArea: No such file or directory 

und Problem:

qprinter.h: No such file or directory 

Aber ich sie schließlich gelöst, indem manuell benötigte Dateien hinzufügen.

geht auf:

sudo make install 

4:

dann gehe ich eric6 zu installieren, indem Sie Folgendes eingeben:

sudo python3 install.py 

Aber ich habe:

Checking dependencies

Python Version: 3.4.0

Found PyQt5

Sorry, please install QScintilla2 and its PyQt5/PyQt4 wrapper.

Error: /usr/lib/python3/dist-packages/PyQt5/Qsci.so: undefined symbol: _ZTI13QsciScintilla

Antwort

3

Das Hauptproblem ist, dass Sie gegen Qt4 ra verknüpfen ther als Qt5. Aus diesem Grund werden die Header QAbstractScrollArea und QPrinter als fehlend gemeldet und Sie erhalten später den Fehler undefined symbol.

QScintilla verwendet eine Feature-Datei, um die Kompilierzeit-Konfiguration zu steuern, und ihre Quellen müssen gepatcht werden, um einen guten Build für Qt5 zu erhalten.

So wird zuerst eine neue Reihe von Quellen entpacken und dann diese Änderungen vornehmen:

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 

Dies wird sicherstellen, dass Sie unabhängige qscintilla-Bibliotheken für Qt5 erhalten.

Wenn das getan ist, werden die folgenden Schritte unternehmen, um (als normaler Benutzer) zu bauen:

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 

Wenn dies gelingt, dann können Sie alles installieren (als root):

cd 'path/to/src/Qt4Qt5' 
make install 

cd '../designer-Qt4Qt5' 
make install 

cd '../Python' 
make install 
+0

Endlich habe ich das Problem gelöst, aber danach kommen weitere Probleme. Ich installiere Qt5.4.1 unter/opt, aber von 'aus PyQt5 import QtCore; print (QtCore.QT_VERSION_STR)' die Version ist 5.2.1, können Sie mir sagen, wie man Python die Version unter/opt-Datei verwenden? – Zieng

+0

@Zieng. Siehe den Kommentar in meiner Antwort: "Stellen Sie sicher, dass Sie das richtige qmake verwenden!". Sie müssen den vollständigen Pfad des qmake angeben, der beim Kompilieren unter '/ opt' installiert wird. – ekhumoro

+0

Jetzt ist mein Problem, dass ich nicht die richtige QtSql.so bauen kann. Ich denke, das hat nichts mit QScintilla2 zu tun, weil ich während der Installation von eric6 "QScintilla2" gefunden habe und es nichts mit der qmake-Version zu tun hat, da ich während der Erstellung von PyQt5 oder Qt5 nicht einmal qmake verwendete. Also, was ich lösen werde, ist herauszufinden, wie man die richtige QtSql.so bauen. @ Ekhumoro – Zieng

0

ekhumoro's solution above tat nicht ganz für mich arbeiten - lassen Sie uns einfach sagen, vielleicht habe ich etwas verpasst, oder es ist eine Umwelt-spezifische Sache.

Wie auch immer .... Ich tat, was ekhumoro geraten außer nicht bearbeiten Sie diese drei Dateien: (XXX)

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

der Grund für die Bearbeitung von ihnen Ton scheint, aber am Ende der Tag, Eric Installation fehlgeschlagen mit:

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 

Note mit ^^^^ der _qt5 markiert - das sollte theoretisch lösen, aber für mich ist es nicht. Ich habe alle möglichen Dinge vergebens versucht. Kann meine Unwissenheit von einer Einstellung sein.

Ich erwartete ekhumoros Anweisungen zu arbeiten, da die Änderungen für die 3 Dateien empfohlen - siehe (XXX) - konfigurieren Make zum Erstellen von Bibliotheken mit _qt5. Ich habe viele Dinge ausprobiert - Symlinks, usw. Aber am Ende des Tages erlaubte es (XXX) alles ordnungsgemäß fortzufahren.

So - zusammenfassend * wenn Sie nicht brauchen, qscintilla mit PyQt4 gleichzeitig arbeiten lassen und PyQt5 *, tun Rat des ekhumoro minus das Zeug bei (XXX) - diese Weise sollte Eric ohne Probleme installieren .

Achten Sie darauf, mit den Informationen über: es wird wahrscheinlich clobber qscintilla Libs für Qt4

0

Ich denke, das wichtigste ist, --pyqt=PyQt5 die sip/qscimod5.sip statt sip/qscimod4.sip zu führt verwenden. Der Unterschied ist, dass es Zeile %Import QtWidgets/QtWidgetsmod.sip enthält, die für QAbstractScrollArea wesentlich ist.