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 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,它們可能是不需要的):

  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

注意:使用 PyQt5 的 Python 3 的步驟已被證明是有效的,而使用 PyQt4 和 PySide 的 Python 2 的步驟仍處於實驗階段。

Python 3 與 PyQt5(已證明可以工作)

474-feature-py3FAForever/client GitHub 儲存庫的分支似乎使用 Python 3 和 PyQt5,其中包含 QtWebKit。因此,使用這個分支是最直接的解決方案。請注意,PyQt5(但不是 PyQt4)實際上可以使用 來安裝pip,這會讓事情變得更方便。

使用 PyQt5 的 Python 3 步驟:

  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 的 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
    
  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
    

使用 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/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)它QtWebKit從而PySide不是導入PyQt4

  3. 建立並啟動 Python 2 的 virtualenv 並強制升級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-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 .
    

    請注意.每個符號連結末尾的 。

  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谷歌搜尋:

不幸的是,還有很多谷歌結果,但我相信這些是最適合您閱讀的如果第一個建議沒有成功。

相關內容