QtWebKit на ubuntu 17.04

10

Я пытаюсь скомпилировать это приложение python из источника

  

В проекте есть qtwebkit как зависимость, и это похоже   вызывая проблемы.

     

Как установить qtwebkit на 64-разрядную версию Ubuntu 17.04 таким образом, чтобы скомпилировать пипетку 32-разрядного приложения python2 (и в результате   скомпилированное приложение), чтобы найти его?

     

При запуске программа вылетает и выдает журнал в   ~ / FAForever / logs / forever.log, который, как представляется, явно указывает на отсутствие   Проблема QtWebKit:

2017-06-08 21:41:11,689 INFO     root                           FAF version: 0.12.5-1-gc49373c Environment: production
2017-06-08 21:41:11,693 INFO     util                           PERSONAL_DIR initial: /home/t/Documents
2017-06-08 21:41:11,693 INFO     util                           PERSONAL_DIR final: /home/t/Documents
2017-06-08 21:41:12,032 INFO     __main__                       >>> --------------------------- Application Launch
2017-06-08 21:41:12,161 ERROR    __main__                       Uncaught exception
Traceback (most recent call last):
  File "/home/t/faf-0.12.5/faf-client/src/__main__.py", line 129, in <module>
    runFAF()
  File "/home/t/faf-0.12.5/faf-client/src/__main__.py", line 87, in runFAF
    import client
  File "/home/t/faf-0.12.5/faf-client/src/client/__init__.py", line 31, in <module>
    from _clientwindow import ClientWindow
  File "/home/t/faf-0.12.5/faf-client/src/client/_clientwindow.py", line 11,
     

в           импорт чата         Файл "/home/t/faf-0.12.5/faf-client/src/chat/init.py", строка 33, в           от _chatwidget import ChatWidget как лобби         Файл «/home/t/faf-0.12.5/faf-client/src/chat/_chatwidget.py», строка 15, в           from chat.channel import Channel         Файл «/home/t/faf-0.12.5/faf-client/src/chat/channel.py», строка 2, в           from fa.replay import replay         Файл "/home/t/faf-0.12.5/faf-client/src/fa/init.py", строка 18, в           из повторного воспроизведения повтора         Файл «/home/t/faf-0.12.5/faf-client/src/fa/replay.py», строка 5, в           из проверки импорта fa.check         Файл «/home/t/faf-0.12.5/faf-client/src/fa/check.py», строка 12, в           from fa.mods import checkMods         Файл «/home/t/faf-0.12.5/faf-client/src/fa/mods.py», строка 3, в           импорт modvault         Файл "/home/t/faf-0.12.5/faf-client/src/modvault/init.py", строка 51, в           из modvault.utils import *         Файл «/home/t/faf-0.12.5/faf-client/src/modvault/utils.py», строка 12, в           из хранилища импорта luaparser         Файл "/home/t/faf-0.12.5/faf-client/src/vault/init.py", строка 2, в           от PyQt4 импорт QtWebKit       ImportError: невозможно импортировать имя QtWebKit       2017-06-08 21: 41: 12,190 INFO request.packages.urllib3.connectionpool Запуск нового HTTP-соединения   (1): api.dev.faforever.com       2017-06-08 21: 41: 12,387 INFO request.packages.urllib3.connectionpool Запуск нового соединения HTTPS   (1): api.dev.faforever.com

     

Так что, возможно, мне просто нужно запустить

sudo apt install qtwebkit
     

Желаю! это получилось не так просто.

     

Я думал, что добавить эту программу было бы легко, но я вынужден   признаю, что я был самонадеянным.

     

Это не в репозиториях, и нет deb для ubuntu:    Ссылка

     

Я нашел это:    Ссылка , которая   казалось многообещающим. Я запустил процедуру pbuilder:

sudo pbuilder --create
sudo echo COMPONENTS="main restricted universe multiverse" >> /etc/pbuilderrc
sudo pbuilder update --override-config
sudo pbuilder --build qtwebkit-source_2.3.2-0ubuntu13.dsc
     

, который создал четыре файла deb:

     
  • libqtwebkit4_2.3.2-0ubuntu13_amd64.deb
  •   
  • libqtwebkit4-dbg_2.3.2-0ubuntu13_amd64.deb
  •   
  • libqtwebkit-dev_2.3.2-0ubuntu13_amd64.deb
  •   
  • libqtwebkit-qmlwebkitplugin_2.3.2-0ubuntu13_amd64.deb
  •   

у них есть две проблемы: они начинаются с "lib" и   вкладка - на sudo apt remove libq возвращает все   это:

libqdjango-db0                libqt4-declarative-gestures   libqt4-scripttools            libqt5gui5                   
     

libqt5quicktest5 libqt5xmlpatterns5       libqgsttools-p1 libqt4-декларативные частицы libqt4-sql libqt5multimedia5
  libqt5sensors5 libqtassistantclient4       libqjson0 libqt4-designer libqt4-sql-sqlite libqt5multimedia5-plugins libqt5sql5   libqtcore4       libqmenumodel0 libqt4-dev libqt4-svg libqt5multimediaquick-p5
  libqt5sql5-sqlite libqtdbus4       libqmi-glib5 libqt4-dev-bin libqt4-test libqt5multimediawidgets5 libqt5svg5   libqtgui4       libqmi-proxy libqt4-help libqt4-xml libqt5network5
  libqt5systeminfo5 libqtwebkit4       libqofono-qt5-0 libqt4-network libqt4-xmlpatterns libqt5opengl5
  libqt5test5 libqtwebkit4-dbg       libqpdf17 libqt4-opengl libqt5concurrent5 libqt5organizer5
  libqt5versit5 libqtwebkit-dev       libqqwing2v5 libqt4-opengl-dev libqt5contacts5 libqt5positioning5
  libqt5webkit5 libqtwebkit-qmlwebkitplugin       libqt4-dbg libqt4qevercloud3 libqt5core5a libqt5printsupport5
  libqt5widgets5 libqtweetlib1.0       libqt4-dbus libqt4-qt3support libqt5dbus5 libqt5qml5
  libqt5x11extras5 libqtweetlib-dev       libqt4-declarative libqt4-script libqt5feedback5 libqt5quick5 libqt5xml5   libquadmath0      

whereis не работает ни на одном из них:

$ whereis libqtwebkit4
libqtwebkit4:
     

Я также пробовал:

sudo apt install python-pyqt5.qtwebkit
     

Тот же результат.

     

Я подумал: «Может быть, я не должен делать эту системную сторону, но   virtualenv side? ".

     

Поэтому я попытался добавить его в файл requirements.txt:

     
  • QtWebKit
  •   
  • QtWebKit-источник
  •   
  • питон-QtWebKit
  •   
  • питон-pyqt5.qtwebkit
  •   
  • libqtwebkit
  •   
  • QtWebKit == 4,0
  •   
  • pytest-QtWebKit
  •   

, но pip не смог найти его при переходе на ./faf-client-venv/bin/pip install -r ./faf-client/requirements.txt .

     

Это работало в прошлом, поскольку мой учебник YouTube демонстрирует

     

Я скомпилировал его для Linux до и даже создал удобный скрипт   который упрощает шаги компиляции, которые вы можете использовать для   помогите мне, если вы выберете (справедливое предупреждение, это   скрипт был протестирован только на дистрибутивах Ubuntu, и я немного   начинающий, чтобы он не был чистым кодом, исправления приветствуются).

     

Обновление (10/6/2017):

     

Я пробовал другой подход для получения qtwebki; составление следующего    это руководство по GitHub

     

Но я столкнулся с другой проблемой:

[email protected]:~/WebKitBuild/Release$ cmake -DPORT=Qt -DCMAKE_BUILD_TYPE=Release \ ../..
– The C compiler identification is GNU 6.3.0
– The CXX compiler identification is GNU 6.3.0
– Check for working C compiler: /usr/bin/cc
– Check for working C compiler: /usr/bin/cc – works
– Detecting C compiler ABI info
– Detecting C compiler ABI info - done
– Detecting C compile features
– Detecting C compile features - done
– Check for working CXX compiler: /usr/bin/c++
– Check for working CXX compiler: /usr/bin/c++ – works
– Detecting CXX compiler ABI info
– Detecting CXX compiler ABI info - done
– Detecting CXX compile features
– Detecting CXX compile features - done
– Found BISON: /usr/bin/bison (found suitable version "3.0.4", minimum required is "2.1") 
– Found Gperf: /usr/bin/gperf (Required is at least version "3.0.1") 
– Found Perl: /usr/bin/perl (found suitable version "5.24.1", minimum required is "5.10.0") 
– Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.13", minimum required is "2.7.0") 
– Could NOT find Ruby (missing: RUBY_INCLUDE_DIR RUBY_LIBRARY RUBY_CONFIG_INCLUDE_DIR) (found suitable version "2.3.0", minimum
     

требуется «1.9»)       - Ищите файлы include.h       - Ищите файлы include.h - найдены       Предупреждение CMake (dev) в Source / cmake / OptionsQt.cmake: 253 (get_target_property):       Политика CMP0045 не установлена: ошибка для несуществующей цели в       get_target_property. Запустите «cmake --help-policy CMP0045» для получения сведений о политике.       Используйте команду cmake_policy, чтобы установить политику и подавить это предупреждение.       get_target_property () с несуществующей целью «Qt5 :: Core».       Стек вызовов (последний вызов сначала):       Источник / cmake / WebKitCommon.cmake: 47 (включить)       CMakeLists.txt: 135 (включить)       Это предупреждение для разработчиков проектов. Используйте -Wno-dev для его подавления.       - Найдено PkgConfig: / usr / bin / pkg-config (найденная версия «0.29.1»)       - Проверка модуля 'sqlite3'       - Найдено sqlite3, версия 3.16.2       - Найдено Sqlite: / usr / include       - Поиск pthread.h       - Поиск pthread.h - найдено       - Поиск pthread_create       - Поиск pthread_create - не найден       - Поиск pthread_create в pthreads       - Поиск pthread_create в pthreads - не найден       - Поиск pthread_create в pthread       - Поиск pthread_create в pthread - найдено       - Найденные темы: TRUE       - Найдено JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so       - Найдено ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (найденная версия «1.2.11»)       - Найдено PNG: /usr/lib/x86_64-linux-gnu/libpng.so (найденная версия «1.6.28»)       - Проверка модуля 'icu-uc'       - Найдено icu-uc, версия 57.1       - Проверка модуля 'icu-i18n'       - Найдено icu-i18n, версия 57.1       - Найденные файлы заголовков ICU в / usr / include       - Найденные библиотеки ICU: /usr/lib/x86_64-linux-gnu/libicuuc.so       - Найдено LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so (найдена подходящая версия «2.9.4», минимальная требуемая «2.8.0»)       - Найдено LibXslt: /usr/lib/x86_64-linux-gnu/libxslt.so (найдена подходящая версия «1.1.29», минимальная требуемая «1.1.7»)       - Проверка модуля 'fontconfig'       - найдено fontconfig, версия 2.11.94       - Найдено Fontconfig: /usr/lib/x86_64-linux-gnu/libfontconfig.so       - Не удалось найти WEBP (отсутствует: WEBP_INCLUDE_DIRS WEBP_LIBRARIES)       Ошибка CMake в Source / cmake / OptionsQt.cmake: 454 (find_package):       Не предоставив «FindQt5.cmake» в CMAKE_MODULE_PATH, этот проект       попросил CMake найти файл конфигурации пакета, предоставленный «Qt5», но       CMake его не нашел.       Не удалось найти файл конфигурации пакета, предоставленный «Qt5» (запрошенный       версия 5.2.0) с любым из следующих имен:       Qt5Config.cmake       qt5-config.cmake       Добавьте префикс установки «Qt5» в ​​CMAKE_PREFIX_PATH или установите «Qt5_DIR»       в каталог, содержащий один из вышеуказанных файлов. Если «Qt5» обеспечивает       отдельный пакет разработки или SDK, убедитесь, что он установлен.       Стек вызовов (последний вызов сначала):       Источник / cmake / WebKitCommon.cmake: 47 (включить)       CMakeLists.txt: 135 (включить)       - Неполная конфигурация, произошли ошибки!       См. Также «/home/t/WebKitBuild/Release/CMakeFiles/CMakeOutput.log».       См. Также «/home/t/WebKitBuild/Release/CMakeFiles/CMakeError.log».      

Обновление (21/06/2017):

     

Благодаря @edwinksl я сделал некоторый прогресс (после его руководства, которое я сделал   некоторые изменения):

     

сразу после pip install -r faf-client/requirements.txt Я добавил    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O ./faf-client/lib/faf-uid и chmod +x ./faf-client/lib/faf-uid   затем сделал cd ./faf-client && ../venv/bin/python src/__main__.py

     

в соответствии с исходным сообщением в учебном форуме. Я построил свой скрипт с помощью:    Ссылка

     

FAF работает, но все еще с журналом ошибок.

     

журнал намного короче, но, по-видимому, указывает   Проблема QtWebKit:

2017-06-21 16:37:55,894 INFO     root                           FAF version: 0.13.0-rc-2-g09326cd Environment: production
2017-06-21 16:37:55,895 INFO     util                           PERSONAL_DIR initial: /home/t/Documents
2017-06-21 16:37:55,896 INFO     util                           PERSONAL_DIR final: /home/t/Documents
2017-06-21 16:37:56,099 INFO     __main__                       >>> --------------------------- Application Launch
2017-06-21 16:37:56,274 ERROR    __main__                       Uncaught exception
Traceback (most recent call last):
  File "src/__main__.py", line 129, in <module>
    runFAF()
  File "src/__main__.py", line 87, in runFAF
    import client
  File "/home/t/Desktop/temp/faf-client/src/client/__init__.py", line 31, in <module>
    from _clientwindow import ClientWindow
  File "/home/t/Desktop/temp/faf-client/src/client/_clientwindow.py", line
     

33, в           от PyQt4 импорт QtCore, QtGui, QtNetwork, QtWebKit       ImportError: невозможно импортировать имя QtWebKit

     

Обновление № 2

     

достижение прогресса:

     

, используя новый github push

     

Ссылка после   клонировал эту ветвь и переименовал ее «faf-client»:

sudo apt install python3-pyqt5
virtualenv venv

source venv/bin/activate
pip install -U --force-reinstall pip
wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O
     

./ FAF-клиент / Библиотека / FAF-UID

chmod +x ./faf-client/lib/faf-uid
cd faf-client/
pip install -r requirements.txt

cd ../
cd venv/lib/python2.7/site-packages
ln -s /usr/lib/python3.7/dist-packages/PyQt4/ .
ln -s /usr/lib/python3.7/dist-packages/sip.x86_64-linux-gnu.so .
ln -s /usr/lib/python3.7/dist-packages/PySide/ .

cd -

cd ./faf-client && ../venv/bin/python src/__main__.py
bash: venv/bin/python: No such file or directory
(venv) [email protected]:~/faf2/faf-client$ cd
(venv) [email protected]:~$ cd faf2/
(venv) [email protected]:~/faf2$ cd ./faf-client && ../venv/bin/python src/__main__.py
Traceback (most recent call last):
  File "src/__main__.py", line 43, in <module>
    from PyQt5 import QtWidgets, uic
ImportError: No module named PyQt5
     

Обновление (22/6/2017)

работает и работает благодаря руководству @edwinksls "Python 3 с PyQt5". обозначил его как решение. хорошая работа!

Обновление (31/1/2018)

Жаль, что я так долго не обновлял этот пост. он получил 2500 просмотров! он действительно заслуживает актуальной информации.

Так как я спросил много, это случилось. FAF теперь имеет более или менее поддержку Linux. у них даже есть wiki для его установки (и для дистрибутива!):

Ссылка

он не гарантированно соответствует вашим потребностям, больше можно найти, копая: Ссылка

прямо сейчас вики не все в курсе.

в течение некоторого времени я мог бы получить faf для запуска с помощью родного python, не требуется виртуальный, но QT изменяет зависимости и состав пакета, а также Использование FAF их нарушило это снова ... временно надеюсь!

будьте уверены, что у меня это работает лично, и я здесь, чтобы предложить утешение (попробуйте пропустить шаги 6 и 7, сначала они могут быть ненужными):

  1. Установите некоторые предварительные условия: sudo apt update && sudo apt install wget PyQt5.QtMultimedia python3-idna python3-semantic-version python3-pyqt5 python3-pyqt5.qtwebengine
  2. cd Downloads && wget https://github.com/FAForever/client/archive/0.16.1.tar.gz (или любой выпуск последней версии Ссылка )
  3. (для этого примера я выберу на дом) ( cd Downloads/ && mv client-0.16.1.tar.gz ~/ && cd && tar -zxf client-0.16.1.tar.gz && mv client-0.16.1 faf-client && rm client-0.16.1.tar.gz )
  4. cd fafclient/ : переход к рабочей директории
  5. sed -i 1,1d requirements.txt : удаляет cxFreeze из требований (он не требуется, и он будет убивать компиляцию).
  6. virtualenv -p python3 faf
  7. pip install -r requirements.txt
  8. sudo wget https://github.com/FAForever/uid/releases/download/v4.0.5/faf-uid -O /usr/bin/faf-uid : загружает логин двоичный файл и: sudo chmod +x /usr/bin/faf-uid разрешает выполнение faf.
  9. touch res/RELEASE-VERSION && echo "0.16.1" >> res/RELEASE-VERSION : выполняет окончательное требование faf: файл версии выпуска.

теперь он должен запускаться, но для этого он сделает бегун:

touch FAF.sh
echo "#! /bin/bash" >> FAF.sh
echo "cd /home/t/faf-client" >> FAF.sh
echo "python3 src/__main__.py" >> FAF.sh
chmod +x FAF.sh

, затем ./FAF.sh для запуска FAF.

Ура!

    
задан tatsu 08.06.2017 в 20:22
источник

2 ответа

4

Примечание: шаги для Python 3 с PyQt5, как доказано, работают, в то время как шаги для Python 2 с PyQt4 и PySide все еще являются экспериментальными.

Python 3 с PyQt5 (проверено на работу)

Похоже, что ветвь 474-feature-py3 репозитория FAForever / client GitHub использует Python 3 с PyQt5, который содержит QtWebKit. Поэтому использование этой ветви является наиболее простым решением. Обратите внимание, что PyQt5 (но не PyQt4) на самом деле может быть установлен с pip , поэтому это делает вещи более удобными.

Шаги для Python 3 с PyQt5:

  1. cd в каталог по вашему выбору, который будет ~/Desktop/temp для написания этого ответа, git clone хранилище данных FAForever / client GitHub и git checkout 474-feature-py3 branch:

    mkdir ~/Desktop/temp
    cd ~/Desktop/temp
    git clone https://github.com/FAForever/client.git faf-client
    cd faf-client
    git checkout 474-feature-py3
    
  2. Создайте и активируйте virtualenv для Python 3 (по умолчанию это Python 3.5 для Ubuntu 17.04) и принудительно обновите pip , чтобы убедиться, что он обновлен:

    virtualenv venv -p python3  # replace python3 with python3.6 if you want to use Python 3.6 instead
    source venv/bin/activate
    pip install -U --force-reinstall pip
    
  3. Используйте pip для установки PyQt5 и requirements.txt :

    pip install PyQt5
    pip install -r requirements.txt
    
  4. Загрузите двоичный файл faf-uid в faf-client/lib и сделайте его выполнимым:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  5. Запустить python на src/__main__.py :

    python src/__main__.py
    

Python 2 с PyQt4 и PySide (экспериментальный)

Похоже, что я понял, как импортировать модуль QtWebKit , но у меня нет установленной игры FAF, поэтому я не могу полностью проверить, что это работает, и поэтому этот ответ является незавершенным.

В двух словах я использовал apt для установки python-qt4 , у которого not есть модуль QtWebKit . Я создал и активировал virtualenv без использования опции --system-site-packages и использовал pip для установки PySide , у которого есть модуль QtWebKit . Затем я символизировал соответствующие системные библиотеки и файлы для PyQt4 в virtualenv. Затем я внес пару изменений в faf-client/src , чтобы импортировать модуль QtWebKit из PySide . Это решение вдохновлено ссылкой , Ссылка и Ссылка .

Шаги:

  1. Установите python-qt4 :

    sudo apt update
    sudo apt install python-qt4
    
  2. cd в каталог по вашему выбору, который будет ~/Desktop/temp для написания этого ответа, git clone моей версии репозитория и git checkout patch branch:

    mkdir ~/Desktop/temp
    cd ~/Desktop/temp
    git clone https://github.com/edwinksl/client.git faf-client
    cd faf-client
    git checkout patch
    

    В этой ветке patch имеется несколько дополнительных коммитов по сравнению с ветвью develop по умолчанию: 1) она избавляется от спецификации версии для cx_Freeze , что давало мне проблемы с установкой, если раньше я использовал версию 4.3.4 и 2) он импортирует QtWebKit из PySide вместо PyQt4 .

  3. Создайте и активируйте virtualenv для Python 2 и принудительно обновите pip , чтобы убедиться, что он обновлен:

    virtualenv venv
    source venv/bin/activate
    pip install -U --force-reinstall pip
    
  4. Используйте pip для установки PySide и requirements.txt :

    pip install PySide
    pip install -r requirements.txt
    
  5. Загрузите двоичный файл faf-uid в faf-client/lib и сделайте его выполнимым:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  6. cd в каталог site-packages внутри virtualenv и сделать соответствующие символические ссылки:

    cd venv/lib/python2.7/site-packages
    ln -s /usr/lib/python2.7/dist-packages/PyQt4/ .
    ln -s /usr/lib/python2.7/dist-packages/sip.x86_64-linux-gnu.so .
    

    Обратите внимание на . в конце каждой символической ссылки.

  7. cd вернуться к faf-client и запустить python on src/__main__.py :

    cd -  # this goes back to previous directory, which should be ~/Desktop/temp/faf-client
    python src/__main__.py
    
ответ дан edwinksl 16.06.2017 в 05:50
источник
1

Проверить ~/.bashrc для переопределения версии Python

Пакет, который вы хотите скомпилировать, требует Python версии 2.7.x. Подтвердите, что с помощью этих команд:

$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyQt4
>>> print PyQt4.__path__
['/usr/lib/python2.7/dist-packages/PyQt4']
>>> 

Это была проблема в Q & amp; A .

Вы не одиноки с linux error PyQt4 import QtWebKit google search:

К сожалению, есть много других результатов Google, но я считаю, что наиболее подходящий для вас способ читать , если , первая рекомендация не выходит.

    
ответ дан WinEunuuchs2Unix 16.06.2017 в 01:26