tat*_*tsu 11 pyqt software-installation qt4 17.04 qtwebkit
我正在尝试将 FAF(本机)与 FA(通过 wine)结合运行
(由于这篇文章收到的意见以及方法更新了多少,我决定更新这个问题,以便它回答和提问。检查这篇文章的修订历史,以找到运行旧方法的过程python 客户端和旧指南)
使用此脚本:(2019 年 3 月 12 日更新)
https://github.com/tatsujb/installFAFscript
https://www.youtube.com/watch?v=BEWUEoQ8Q4k
如何:从源代码编译这个 python 应用程序(FAF):
感谢 @edwinksl 的“Python 3 with PyQt5”指南。将他标记为解决方案。做得好!
对不起,我花了这么长时间才更新这篇文章。已获得 7000 次浏览!它真的值得最新的信息。
自从我问了很多事情发生了。FAF 现在或多或少有 linux 支持。他们甚至有一个 wiki 来安装它(以及每个发行版!):
https://wiki.faforever.com/index.php?title=Setting_Up_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.qtwebenginecd 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 fafpip install -r requirements.txtsudo 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
Run Code Online (Sandbox Code Playgroud)
然后./FAF.sh运行FAF。
干杯!
注意:使用 PyQt5 的 Python 3 的步骤已被证明是有效的,而使用 PyQt4 和 PySide 的 Python 2 的步骤仍处于实验阶段。
FAForever/client GitHub 存储库的分支似乎474-feature-py3使用 Python 3 和 PyQt5,其中包含 QtWebKit。因此,使用这个分支是最直接的解决方案。请注意,PyQt5(但不是 PyQt4)实际上可以使用 来安装pip,这样会让事情变得更方便。
使用 PyQt5 的 Python 3 步骤:
cd进入您选择的目录(用于~/Desktop/temp编写此答案)、git cloneFAForever/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
Run Code Online (Sandbox Code Playgroud)创建并激活 Python 3 的 virtualenv(Ubuntu 17.04 的默认值是 Python 3.5)并强制升级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
Run Code Online (Sandbox Code Playgroud)用于pip安装PyQt5并来自requirements.txt:
pip install PyQt5
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)将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
Run Code Online (Sandbox Code Playgroud)运行:pythonsrc/__main__.py
python src/__main__.py
Run Code Online (Sandbox Code Playgroud)看来我可能已经弄清楚如何导入QtWebKit模块,但我没有安装 FAF 游戏,所以我无法完全验证这是否有效,因此这个答案是一项正在进行的工作。
简而言之,我以前apt安装的python-qt4,它没有该QtWebKit模块。我创建并激活了一个 virtualenv ,但没有使用该--system-site-packages选项,并用于pip安装PySide,它确实有该QtWebKit模块。然后,我将 PyQt4 的相应系统库和文件符号链接到 virtualenv 中。然后我做了一些更改以从faf-client/src导入模块。该解决方案的灵感来自/sf/answers/2019507311/、/sf/answers/2582111171/和/sf/answers/2633152651/。QtWebKitPySide
脚步:
安装python-qt4:
sudo apt update
sudo apt install python-qt4
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
patch与默认分支相比,此分支有几个额外的提交develop:1)它摆脱了 的版本规范cx_Freeze,如果我使用之前指定的版本,这会给我带来安装问题4.3.4,2)它QtWebKit从而PySide不是导入PyQt4。
创建并激活 Python 2 的 virtualenv 并强制升级pip以确保它是最新的:
virtualenv venv
source venv/bin/activate
pip install -U --force-reinstall pip
Run Code Online (Sandbox Code Playgroud)用于pip安装PySide并来自requirements.txt:
pip install PySide
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)将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
Run Code Online (Sandbox Code Playgroud)cd到site-packagesvirtualenv 内的目录并创建适当的符号链接:
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 .
Run Code Online (Sandbox Code Playgroud)
请注意.每个符号链接末尾的 。
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
Run Code Online (Sandbox Code Playgroud)