Python 3 と PyQt5 (動作が実証済み)

Python 3 と PyQt5 (動作が実証済み)

私はFAF(ネイティブ)をFA(Wine経由)と組み合わせて実行しようとしています

(この投稿の閲覧数とメソッドの更新頻度を考慮して、この質問を更新して、質問するだけでなく回答もすることにしました。Python クライアントを実行する古いメソッドと古いガイドを見つけるプロセスについては、この投稿の改訂履歴を確認してください)


ベータ版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

現時点では、ウィキはそれほど最新ではありません。

しばらくの間、仮想環境を必要とせずにネイティブ Python で faf を実行できましたが、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. 抽出(この例では、home に抽出します)(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-uidfaf による実行を許可します。
  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.shFAFを実行します。

乾杯!

答え1

注: PyQt5 を使用した Python 3 の手順は動作することが実証されていますが、PyQt4 および PySide を使用した Python 2 の手順はまだ実験段階です。

Python 3 と PyQt5 (動作が実証済み)

474-feature-py3FAForever/client GitHub リポジトリのブランチでは、QtWebKit を含む PyQt5 を使用した Python 3 が使用されているようです。したがって、このブランチを使用するのが最も簡単な解決策です。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 用の仮想環境を作成してアクティブ化し (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-uidfaf-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. 実行python場所src/__main__.py:

    python src/__main__.py
    

PyQt4 と PySide を使用した Python 2 (実験的)

モジュールをインポートする方法がわかったようですQtWebKitが、FAF ゲームがインストールされていないため、これが機能するかどうかを完全に確認することはできません。そのため、この回答は現在進行中です。

簡単に言うと、私はaptをインストールしていましたpython-qt4が、ないにはモジュールがあります。オプションQtWebKitを使用せずに仮想環境を作成してアクティブ化し--system-site-packagespipをインストールするために使用しました。次に、PyQt4 の適切なシステムライブラリとファイルを仮想環境にシンボリックリンクしました。次に、からモジュールをインポートするために にいくつかの変更を加えました。このソリューションは、PySideQtWebKitfaf-client/srcQtWebKitPySidehttps://stackoverflow.com/a/28850104/486919https://stackoverflow.com/a/36887302/486919そしてhttps://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からインポートします。PySidePyQt4

  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-uidfaf-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-client実行しpythonます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 QtWebKitGoogle 検索を使っているのはあなただけではありません:

残念ながら、Google の結果は他にもたくさんありますが、これらがあなたにとって最も適切なものだと思います。もし最初の推奨はうまくいきません。

関連情報