我正在尝试运行 FAF(本机)和 FA(通过 wine)
(由于这篇文章的浏览量以及方法更新的程度,我决定更新这个问题,以便它能够回答和询问。检查这篇文章的修订历史,了解找到运行 Python 客户端的旧方法和旧指南的过程)
Beta 状态 Java 客户端:
使用这个脚本:(2019 年 3 月 12 日更新)
https://github.com/tatsujb/installFAFscript
https://www.youtube.com/watch?v=BEWUEoQ8Q4k
Python 客户端:(现已过时)
如何编译这个 Python 应用程序(FAF)来源:
感谢@edwinksl 的“Python 3 与 PyQt5”指南,已启动并运行。将其标记为解决方案。干得好!
更新(2018/1/31)
抱歉我花了这么长时间才更新这篇文章。它已经有 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
目前 wiki 还不是最新的。
有一段时间我可以让 faf 与本机 python 一起运行,不需要虚拟环境,但 QT 的 aver 更改依赖项和包组成以及 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
为 Python 3 创建并激活虚拟环境(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
使用
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
模块。我创建并激活了一个虚拟环境,没有使用选项--system-site-packages
,并用于pip
安装PySide
,它有QtWebKit
模块。然后我将 PyQt4 的相应系统库和文件符号链接到虚拟环境。然后我对进行了一些更改,以便从中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
。创建并激活 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
虚拟环境内的目录并建立适当的符号链接: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
谷歌搜索的人:
- ImportError:没有名为“PyQt4.QtWebKit”的模块
- 无法运行 spyder/ImportError:没有名为 QtWebKit 的模块 #3200
- ImportError:没有名为“PyQt4.QtWebKit”的模块 #1683
- 由于缺少 PyQt4-WebKit,某些 PyQt4 应用程序无法在 Yakkety 中启动
- Python 无法导入特定的 PyQt4 QtWebKit 模块
- Python 2.7.11 - ImportError:无法导入名称 QtWebKit - Kali Linux / Debian 8
- PyQt4:为什么我会收到“ImportError:没有名为 QtWebkit 的模块”?
不幸的是,谷歌搜索结果还有很多,但我认为这些是最相关的,值得你阅读如果第一个建议没有成功。