2015-06-09 2 views
5

Сначала я установить QScintilla на следующие шаги:Как скомпилировать QScintilla и Eric6 в 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 

И вот я встретил эту проблему:

QAbstractScrollArea: No such file or directory 

и проблема:

qprinter.h: No such file or directory 

Но я, наконец, решил их вручную добавить необходимые файлы.

идет дальше:

sudo make install 

4:

тогда я иду установить eric6, набрав:

sudo python3 install.py 

Но я получил:

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

ответ

3

Основная проблема заключается в том, что вы связываетесь с Qt4 ra чем Qt5. Вот почему заголовки QAbstractScrollArea и QPrinter сообщаются как отсутствующие, и почему вы позже получаете ошибку 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 

Это гарантирует, что вы получите независимые qscintilla libs для Qt5.

Сделав это, выполните следующие шаги, чтобы построить (как обычный пользователь):

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 

В случае успеха, то вы можете установить все (как корень):

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

cd '../designer-Qt4Qt5' 
make install 

cd '../Python' 
make install 
+0

Наконец-то я решил проблему, но после этого появилось больше проблем. Я устанавливаю Qt5.4.1 под/opt, но из 'from PyQt5 импортирует QtCore; print (QtCore.QT_VERSION_STR)' версия 5.2.1, можете ли вы рассказать мне, как заставить python использовать версию в файле/opt? – Zieng

+0

@ Zieng. См. Комментарий в своем ответе: «убедитесь, что вы используете правильный qmake!». Вы должны указать полный путь qmake, установленный под '/ opt' при компиляции. – ekhumoro

+0

Теперь моя проблема в том, что я не могу построить правильный QtSql.so. Я думаю, что это не связано с QScintilla2, потому что, пока я устанавливаю eric6, он сказал, что «нашел QScintilla2», и это не имеет никакого отношения к версии qmake, потому что, когда я строю PyQt5 или устанавливаю Qt5, я даже не использовал qmake. Итак, я собираюсь решить, как построить правильный QtSql.so. @ Ekhumoro – Zieng

0

ekhumoro's solution above сделал не совсем работает для меня - давайте просто скажем, может быть, я что-то пропустил, или это нечто специфическое для окружающей среды.

Во всяком случае .... я сделал то, что ekhumoro посоветовал за исключением не редактировали эти три файла: (XXX)

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

причина для редактирования их кажется звук, но в конце на следующий день Эрик инсталляцию потерпел неудачу с:

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 будут работать, поскольку внесенные изменения для трех файлов - см. (XXX) - настроить Make для создания библиотек с помощью _qt5. Я пробовал много вещей - символические ссылки, и т. Д., Но в конце дня, оставляя (XXX), разрешил все, чтобы продолжить.

Так что - в общем, * если вам не нужно иметь QScintilla одновременно работать с PyQt4 и PyQt5 *, сделать совет ekhumoro минус материал по телефону (XXX) - таким образом, Эрик должен установить без проблем ,

Заботьтесь с информацией выше: он, вероятно, затирать QScintilla библиотеки для Qt4

0

Я думаю, самое главное --pyqt=PyQt5 что приводит к использованию sip/qscimod5.sip вместо sip/qscimod4.sip. Разница в том, что она содержит строку %Import QtWidgets/QtWidgetsmod.sip, которая необходима для QAbstractScrollArea.

Смежные вопросы