Я пытаюсь запустить FAF (встроенно) совместно с FA (через Wine)
(из-за просмотров этого поста и того, насколько обновились методы, я решил обновить этот вопрос, чтобы не только спросить, но и ответить. Проверьте историю изменений этого поста, чтобы узнать о процессе поиска старого метода запуска клиента Python и старых руководствах)
Java-клиент в бета-версии:
используйте этот скрипт:(обновлено 12.03.2019)
https://github.com/tatsujb/installFAFscript
https://www.youtube.com/watch?v=BEWUEoQ8Q4k
Клиент Python: (СЕЙЧАС УСТАРЕЛ)
Как: скомпилироватьэто приложение Python(FAF) из источника:
и работает благодаря руководству @edwinksl "Python 3 с PyQt5". отметил его как решение. Отличная работа!
Обновление (31/1/2018)
Извините, что мне потребовалось так много времени, чтобы обновить этот пост. Он набрал 7000 просмотров! Он действительно заслуживает актуальной информации.
С тех пор, как я спросил, многое произошло. Теперь FAF более-менее поддерживает Linux. У них даже есть вики по его установке (и по дистрибутивам!):
https://wiki.faforever.com/index.php?title=Настройка_FAF_Linux#Debian.2FUbuntu
Нет гарантии, что он будет соответствовать вашим потребностям, более подробную информацию можно найти, покопавшись в:http://forums.faforever.com/viewtopic.php?f=2&t=4507
на данный момент вики не очень актуальна.
Некоторое время мне удавалось заставить faf работать с нативным Python, без необходимости в virtualenv, но изменение зависимостей и состава пакетов в QT, а также их использование в FAF снова сломали это... надеюсь, временно!
Будьте уверены, я лично с этим справлюсь и готов вас утешить (попробуйте сначала пропустить шаги 6 и 7, они могут быть ненужными):
- Установите некоторые необходимые компоненты:
sudo apt update && sudo apt install wget PyQt5.QtMultimedia python3-idna python3-semantic-version python3-pyqt5 python3-pyqt5.qtwebengine
cd Downloads && wget https://github.com/FAForever/client/archive/0.16.1.tar.gz
(или какой-либо другой релиз, который будет последним наhttps://github.com/FAForever/client/releases/)- извлечь (в этом примере я извлеку в домашнюю папку) (
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
) cd fafclient/
: переместить в рабочий каталогsed -i 1,1d requirements.txt
: удаляет cxFreeze из требований (он не требуется и прервет компиляцию)virtualenv -p python3 faf
pip install -r requirements.txt
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.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.
Ваше здоровье!
решение1
Примечание: шаги для 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:
cd
в каталог по вашему выбору, который будет использоваться~/Desktop/temp
для написания этого ответа,git clone
репозиторий FAForever/client GitHub иgit checkout
ветку474-feature-py3
:mkdir ~/Desktop/temp cd ~/Desktop/temp git clone https://github.com/FAForever/client.git faf-client cd faf-client git checkout 474-feature-py3
Создайте и активируйте 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
Используйте
pip
для установкиPyQt5
и изrequirements.txt
:pip install PyQt5 pip install -r requirements.txt
Загрузите
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
Запускать
python
наsrc/__main__.py
:python src/__main__.py
Python 2 с PyQt4 и PySide (экспериментальный)
Похоже, я разобрался, как импортировать модуль QtWebKit
, но у меня не установлена игра FAF, поэтому я не могу полностью проверить, работает ли это, поэтому этот ответ находится в стадии разработки.
Короче говоря, я apt
устанавливал python-qt4
, что делаетнетесть QtWebKit
модуль. Я создал и активировал virtualenv без использования опции --system-site-packages
и использовал pip
для установки PySide
, в котором есть QtWebKit
модуль. Затем я создал символическую ссылку на соответствующие системные библиотеки и файлы для PyQt4 в virtualenv. Затем я внес несколько изменений в , faf-client/src
чтобы импортировать QtWebKit
модуль из PySide
. Это решение вдохновленоhttps://stackoverflow.com/a/28850104/486919,https://stackoverflow.com/a/36887302/486919иhttps://stackoverflow.com/a/37616466/486919.
Шаги:
Установить
python-qt4
:sudo apt update sudo apt install python-qt4
cd
в каталог по вашему выбору, который будет использоваться~/Desktop/temp
для написания этого ответа,git clone
мою версию репозитория иgit checkout
веткуpatch
: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
.Создайте и активируйте virtualenv для Python 2 и выполните принудительное обновление,
pip
чтобы убедиться, что он обновлен:virtualenv venv source venv/bin/activate pip install -U --force-reinstall pip
Используйте
pip
для установкиPySide
и изrequirements.txt
:pip install PySide pip install -r requirements.txt
Загрузите
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
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 .
Обратите внимание на символ
.
в конце каждой символической ссылки.cd
вернутьсяfaf-client
иpython
продолжитьsrc/__main__.py
:cd - # this goes back to previous directory, which should be ~/Desktop/temp/faf-client python src/__main__.py
решение2
Проверьте ~/.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']
>>>
Вот в чем была проблемаВопросы и ответы.
Вы не одиноки в linux error PyQt4 import QtWebKit
поиске Google:
- ImportError: Отсутствует модуль с именем «PyQt4.QtWebKit»
- невозможно запустить spyder / ImportError: нет модуля с именем QtWebKit #3200
- ImportError: Отсутствует модуль с именем «PyQt4.QtWebKit» #1683
- Некоторые приложения PyQt4 не запускаются в Yakkety из-за отсутствия PyQt4-WebKit
- Python не может импортировать определенные модули PyQt4 QtWebKit
- Python 2.7.11 - ImportError: невозможно импортировать имя QtWebKit - Kali Linux / Debian 8
- PyQt4: Почему я получаю сообщение «ImportError: No module named QtWebkit»?
К сожалению, результатов поиска в Google гораздо больше, но я считаю, что эти наиболее релевантны для прочтения.еслипервая рекомендация не срабатывает.