Python 3 和 PyQt5(已证实有效)

Python 3 和 PyQt5(已证实有效)

我正在尝试运行 FAF(本机)和 FA(通过 wine)

(由于这篇文章的浏览量以及方法更新的程度,我决定更新这个问题,以便它能够回答和询问。检查这篇文章的修订历史,了解找到运行 Python 客户端的旧方法和旧指南的过程)


Beta 状态 Java 客户端:

在此处输入图片描述

使用这个脚本:(2019 年 3 月 12 日更新)

https://github.com/tatsujb/installFAFscript

https://www.youtube.com/watch?v=BEWUEoQ8Q4k


Python 客户端:(现已过时)

工作FAF

如何编译这个 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,它们可能是不需要的):

  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(或最新版本https://github.com/FAForever/client/releases/
  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。

干杯!

答案1

注意:针对 Python 3 和 PyQt5 的步骤已被证明有效,而针对 Python 2 和 PyQt4 和 PySide 的步骤仍处于实验阶段。

Python 3 和 PyQt5(已证实有效)

474-feature-py3FAForever/client GitHub 存储库的分支似乎使用 Python 3 和 PyQt5,其中包含 QtWebKit。因此,使用此分支是最直接的解决方案。请注意,PyQt5(但不是 PyQt4)实际上可以使用 进行安装pip,因此这会让事情变得更加方便。

适用于 Python 3 和 PyQt5 的步骤:

  1. 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
    
  2. 为 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
    
  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. 运行:pythonsrc/__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/486919https://stackoverflow.com/a/36887302/486919https://stackoverflow.com/a/37616466/486919

脚步:

  1. 安装python-qt4

    sudo apt update
    sudo apt install python-qt4
    
  2. 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)它QtWebKitPySide而不是导入PyQt4

  3. 创建并激活 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. cdsite-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 .
    

    注意.每个符号链接末尾的。

  7. cd返回faf-clientpython运行src/__main__.py

    cd -  # this goes back to previous directory, which should be ~/Desktop/temp/faf-client
    python src/__main__.py
    

答案2

检查~/.bashrcPython 版本覆盖

您要编译的包需要 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谷歌搜索的人:

不幸的是,谷歌搜索结果还有很多,但我认为这些是最相关的,值得你阅读如果第一个建议没有成功。

相关内容