web-dev-qa-db-ja.com

PySide2 GUIを持つpythonスクリプトからMac OSアプリをビルドする方法?

コンテクスト:

PySide2 GUIを使用して、単純なPythonアプリケーションを開発しています。現在、Windows、Linux、Macでは大丈夫です。 Windowsでは、PyinstallerとInnoSetupを使用して簡単なインストーラを構築できます。それから私はMacで同じことをやろうとしました。システムが正しく署名されていないため、システムはコマンドまたはPyinstallerによって生成されたアプリを開始することを拒否したため、壊れました。そして私はApple開発者ではないので、私は何に署名することはできません...

いくつかの研究の後、私はpy2appを試しました。私はここでさらに一歩進むことができます。と

python setup.py py2app -A

Runnableアプリを作成できます。開発フォルダを使用するため、明らかに別のシステムに移植できません。そして、python setup.py py2appを使用すると、PY2APPはすべての必要なQTスタッフをコピーしなかったため、生成されたプログラムは開始できません。私は欠けているライブラリを1つずつ追加しようとしましたが、システムはプラグインを見つけることができず、私があきらめました...

質問:

QT GUIを使用してpythonスクリプトまたはパッケージをMac上のポータブルアプリに変換するためのレシピで私を助けてくれることができますか?理想的には、レシピはカスタムアプリケーションアイコンの使い方を言うべきですが、これは必須ではありません。

参照:

  • Python 3.8.5
  • macOS 10.15.7カタリナ
  • Pyside2 5.15.1.
  • Pyinstaller 4.0
  • pY2APP 0.22

私の実際のパッケージがSOの質問に大きすぎるので、最小の再現可能な例に切り替えました。

from PySide3.QtWidgets import *
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        hello = QLabel('Hello', self)
        hello.move(50, 50)

def run(args):
    app = QApplication(args)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    run(sys.argv)

そしてこれがpy2appに使用されるsetup.pyファイルです。

from setuptools import setup

APP = ['app.py']
DATA_FILES = []
OPTIONS = {}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
16
Serge Ballesta

私はあなたの問題に対する解決策が見つかると思います ここ 。まず、作成 仮想環境 と同じ仮想環境にすべてのモジュールをインストールします。

mkvirtualenv --python="PATH/TO/PYTHON3.6.5/python.exe" venv

Qtフレームワークをインストールします

# Install qt via homebrew
brew install qt
# Switch to version 5.11.1
brew switch qt 5.11.1
# Do this to link qmake with qt
brew link qt5 --force

その後、Pyside2をインストールしてください

git clone --recursive https://code.qt.io/pyside/pyside-setup

その後、

 cd pyside-setup && git checkout 5.11

PySide2を構築し、インストールし、QMAKEインストールに付属のQtのパスを必ず設定してください。

#To get the path
 which qmake
# Make sure that your virtual environment is activated
# Build PySide2 from source
python setup.py install --qmake=<PATH/TO/QMAKE> --build-tests --ignore-git --jobs=8
# Install PySide2
python setup.py build --qmake=/path/to/qmake --build-tests --ignore-git --jobs=8

更新

まず、同じ仮想環境でコードを実行し、それを使用できる標準のMac OSアプリに変換してください。 py2app または pyinstaller 。また、同じプロセスをたどった後に現在のバージョンで動作していない場合は、PY2APPをダウングレードしてみてください。

Sudo easy_install py2app
#or
pip install -U git+https://github.com/metachris/py2app.git@master

Create setup.pyを作成します

py2applet --make-setup app.py
Wrote setup.py

そして、あなたは 設定ファイル または この例を参照 と持っているファイルを含める必要があります。

from setuptools import setup

APP = ['app.py']
DATA_FILES = []
OPTIONS = {
    'argv_emulation': True,
    'iconfile': 'app.icns'
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

アプリケーションの使用を構築するには

python setup.py py2app -A

アプリを実行するにはこの方法を使わなければなりません

./dist/app.app/Contents/MacOS/app

python setup.py py2app -Aで動作している場合、それはすべて問題が発生していて使用する必要があることを意味します。

rm -rf build dist
python setup.py py2app

問題が発生した場合は、次の参照を参照してください 12 、。また、 代替方法 アプリをOSに変換する。

私があなたのコメントを読んだ後、私は問題が何であるかを見てみました、そして私が見つけた この そしてそれは問題を解決するかもしれません、またはあなたはbbFreezepyInstallerまたはcx_Freezeのような代替ツールを使うことができます

0
i_thamary

私は fbs を使用してアプリを構築しました。 Python + PYQT5アプリケーションを構築することを目的としています(Pyside2を使用することもできます)、そしてそれはMac OSでも(ドキュメント/チュートリアルに従って)作業する必要があります。

Pyinstallerを使用すると、PYQT5の依存関係(特にpyqtgraphで作業していたとき)が含まれていますが、FBSが大きく機能します。

0
anki

OSX用にパッケージ化したい場合は、どちらかの場合も

ビジネスタップを作成します

これはおそらくオープンソース開発者にとって最も意味があります

一般的な指示 https://docs.brew.sh/how-to-create-and-maintain-a-tap

  • Gitであなたのコードをホストする(githubである必要はありません)
  • 式を作成する( 式Cookbook
  • fork GitHubのHomebrew-Core
  • 数式を追加して、メインレポに入れるためのプル要求を作成します。
  • 完成しているようにあなたのプル要求をサポートしています

Apple Developerプログラムに参加してください

これはおそらく閉鎖されたソース開発者にとって最も意味があります

概要: https://developer.apple.com/pple.com/programs/how-it-works/

このプログラムは毎年99USDに費用がかかりますが、あなたはあなたのパッケージ/ファイナルバイナリに署名し、自分自身または彼らのApp Storeに署名することを可能にします

アカウントを作成した後、これがOSXの包装と署名のためのガイドです https://developer.apple.com/forums/thread/128166

  • 署名をサポートするためのコードを構成する(ビルドステップを追加するために追加の手順をクリーンなパスにコピーするために追加)
  • % codesign -s <Developer ID Application signing identity> /path/to/code
  • ストレージフォーマット(.Zip.dmg.pkg)を選択し、アプリケーションをバンドルする
0
ti7