我正在嘗試將 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 with 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
現在維基百科還不是最新的。
有一段時間,我可以讓 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
注意:使用 PyQt5 的 Python 3 的步驟已被證明是有效的,而使用 PyQt4 和 PySide 的 Python 2 的步驟仍處於實驗階段。
Python 3 與 PyQt5(已證明可以工作)
474-feature-py3
FAForever/client GitHub 儲存庫的分支似乎使用 Python 3 和 PyQt5,其中包含 QtWebKit。因此,使用這個分支是最直接的解決方案。請注意,PyQt5(但不是 PyQt4)實際上可以使用 來安裝pip
,這會讓事情變得更方便。
使用 PyQt5 的 Python 3 步驟:
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 的 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
用於
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
使用 PyQt4 和 PySide 的 Python 2(實驗性)
看來我可能已經弄清楚如何導入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
。建立並啟動 Python 2 的 virtualenv 並強制升級
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
谷歌搜尋:
- 匯入錯誤:沒有名為「PyQt4.QtWebKit」的模組
- 無法運行spyder / ImportError:沒有名為QtWebKit的模組#3200
- ImportError:沒有名為「PyQt4.QtWebKit」的模組#1683
- 由於缺少 PyQt4-WebKit,某些 PyQt4 應用程式無法在 Yakkety 中啟動
- Python 無法匯入特定的 PyQt4 QtWebKit 模組
- Python 2.7.11 - 匯入錯誤:無法匯入名稱 QtWebKit - Kali Linux / Debian 8
- PyQt4:為什麼我收到「ImportError:沒有名為 QtWebkit 的模組」?
不幸的是,還有很多谷歌結果,但我相信這些是最適合您閱讀的如果第一個建議沒有成功。