Pythonturtle: インストーラーパッケージを自動的にビルドする

作成日 2018年09月23日  ·  31コメント  ·  ソース: PythonTurtle/PythonTurtle

問題のフォローアップhttps://github.com/cool-RR/PythonTurtle/pull/105#issuecomment-421965482、#106 、および#90、すべてのパッケージングを(最良に)行う方法に関する情報の収集を開始したいと思いますPythonTurtleが実行されるプラットフォーム。 パッケージングを手動で実行する方法を知っていると、すべてを自動化するのは簡単な作業になります。

言い換えれば、私たちは必要です

  1. ターゲットパッケージタイプのリスト(たとえば、MSI for Windows、macOS AppImage、Debian DEB、RPM、Snap)、および
  2. ソース管理のみに存在するソースコードから、各パッケージタイプがどのように構築されるかについての具体的で詳細な手順(シェルコマンドを読む)の完全なリスト

注:この問題でこれを書くことが不快であることが判明した場合は、プロジェクトWikiを使用して

automation

最も参考になるコメント

Windows用のEXEとmacOS用のバンドルを機能させた後の次の素晴らしいことは、Linux用のAppImage

AppImageには、(ある程度) AppImageHubと呼ばれるAppStoreもあります。 そして、比較することで、それが本当にクールなことであることがわかります。 :+1:

全てのコメント31件

現在、WindowsとmacOSにはpy2exepy2appを使用しているようです

PyCon Ottoでの最近の講演によると、 PyInstallerに切り替える必要があります。これにより、Windows、macOS、GNU / Linuxのスタンドアロン実行可能ファイルを同様に構築できます。

py2exeやpy2appの代わりにPyInstallerを使用する必要があることに同意します。

そして、信頼性の高い自動ビルドプロセスが必要であることに同意します。

また、 PythonTurtle Pythonパッケージをビルドし、リリース時にPyPIにプッシュすることも忘れてはなりません。

また、Gitタグ(バージョン番号付き)をGitHubリポジトリにプッシュしてリリースをトリガーすることをお勧めします。 その後、インストーラーはリリースページからダウンロードできるようになり

そのような自動化は少し高い目標ですが、リリースができるようになれば、私は恍惚となるでしょう。

リリースができるようになれば、私は恍惚となるでしょう。

次に、宇宙服を準備します。 :笑顔:

疑われるように、PyInstallerは、インストーラーをビルドするインフラストラクチャで実行する必要があります(たとえば、Windowsインストーラーの場合はWindows、macOSインストーラーの場合はMac)。

私はWindowsもMacも持っていません。 したがって、AppVeyorで構築がどのように行われるかを調べる面倒な調査を行う必要があります。 また、Python 3がインストールされたmacOSが必要です(そして、ドキュメントが古くなっているだけで、Python 3でビルドすることもできます)。

私はおそらくPythonパッケージの自動構築から始めるのが最善でしょう(そしてそれをPyPIに自動的にアップロードします)。 IIUC、とにかく、PyInstaller(のいくつかの機能)を使用してビルドするにはsetup.pyが必要です。
PythonTurtleをこの方法でインストールする方法が1つあります。

私をメンテナとしてPyPIプロジェクトに追加しますか? 自分の資格情報を使用できると、自動化が容易になります。 当然のことながら、私のユーザー名は「bittner」です。

PyPIのメンテナーとしてあなたを追加しました。

PyInstallerに関しては、ReactOSを搭載したVMがWindowsインストーラーの生成に機能するかどうか疑問に思います。

pip install PythonTurtleにプログラムをインストールさせるには、必要なすべての依存関係が難しいことがわかります。

結論:

  • install_requires=['wxPython']setup()に追加することはできますが、前提条件( READMEに記載)が既にインストールされていない限り、これは失敗します。 -非常に技術的なエラー-をキャッチし、インストールが失敗した場合に役立つヒントを出力できる場合があります。
  • 別の方法として、ユーザーがREADMEでインストール手順を実行し、 wxモジュールをインポートできない場合(アプリケーションモジュールではModuleNotFoundError )にPythonTurtleにわかりやすい_reminder_を出力させることもできます。

platform.release()および/またはos.nameを使用して、ユーザーフレンドリーな「前提条件の自動検出」方法で実行することは可能ですが、非常に面倒です。 テキストメッセージを印刷して、READMEのインストールセクションをURLで参照することをお勧めします。

ReactOSを搭載したVMがWindowsインストーラーの生成に機能するかどうか疑問に思います。

自動化された方法でPythonTurtleパッケージを構築するクラウド内のサービスでVMをどのように使用するかはわかりません。 詳細を教えていただけますか? (開発者のマシンでのみローカルで使用する予定ですか?)

そうです、私はこれを考え抜かなかった。

私は2つの質問があると思います:

  1. ReactOSはPyInstallerを使用してWindowsインストーラーを生成するために機能しますか?

  2. クラウド上で自動的に機能するように設定できますか?

最初の質問に対する答えが「はい」であり、そのサービスを提供するSaaSプロバイダーがないとします。 次に、ReactOSゲストでVirtualBoxを実行するDockerイメージをセットアップできるとしましょう。 たぶん、そのDockerイメージを実行するSaaSプロバイダーを見つけることができますか?

https://github.com/pypa/python-packaging-user-guide/issues/267には、Pythonアプリケーションをパッケージ化するための興味深いリンクが

LinuxバンドルのGitHubへのアップロードが(PR#123を介して)完了するとすぐに、macOS

Windows用のEXEとmacOS用のバンドルを機能させた後の次の素晴らしいことは、Linux用のAppImage

AppImageには、(ある程度) AppImageHubと呼ばれるAppStoreもあります。 そして、比較することで、それが本当にクールなことであることがわかります。 :+1:

私にはいいですね!

現在のところ、(PyInstallerを使用して)macOSでアプリケーションバンドルを構築することは完全には機能していません。 別の方法として、自作式を作成することもできると思いました。 私は現在、関連するドキュメントを見ています:

うーん、数式を効果的に開発するにはMacを持っている人が必要なようです。 難しいことではないようですが、本当に。 :考え:

Python(3)に関連する式は次のとおりです。

  • Python (3.7をインストールするようです。Python@ 3はシンボリックリンク、いわゆる「エイリアス」です)
  • wxPythonPython @ 2に依存します。https://github.com/Homebrew/homebrew-core/issues/32744も参照してください)

Python@3 (= 3.7)に依存し、pipを介してwxPythonをインストールするだけで十分な場合があります(テストのように)。

参考までに、自動リリースが機能しない場合( api_key:サンプル値に設定されているため、現在は機能しない可能性がありVSCodiumプロジェクトがGitHubで自動リリースを行う方法は

ラム、あなたは「Windowsインストーラー」が現在の最優先事項であると述べました。 私は同意しますよ。

組合の現在の状態を書き留めましょう。

Windowsインストーラー(進捗状況の概要)

  • Windowsビルドは2018年10月からAppVeyorで動作して
  • これらのビルドは、Windows .EXEバイナリと.MSIインストーラーを作成します(ジョブの例を参照)。
  • .MSIインストーラーのファイルサイズが非常に小さいため、実際には空であることがわかります。
  • .EXEを(ダウンロードして実行して)試してみて、.MSIが機能しないことを確認したことを思い出します。 (または、これは私のためにそれをテストした他の誰かでしたか?わからない。)
  • 他の問題で(または私たちのプライベートチャットでしたか?)、動作するMSIインストーラー(実際にはMS Visual Studioプロジェクトファイルなど)を構築するために何が必要かについて言及したことを思い出します。

私はすべてを準備したと思います。 今、私はWindowsコンピュータを持っておらず、購入する予定もないので(ちなみに、macOSでも同じです)、足りないのは、足りないパズルのピースを引き継いで配置する人だけです。 私の腸の感覚から、私たちは本当に、本当に「タスク完了」に近づいています。

次のステップ(ボランティアが必要)

StackOverflowの回答によると、 Microsoft Visual Studio InstallerProjects拡張機能を使用して必要な構成を作成するだけでよいようです。

したがって、あなたは引き継ぐことができますか? 実行する必要があるのは、IIUCです。

  1. インストーラーのセットアップを使用してVisualStudioプロジェクトを作成する
  2. インストーラーがローカルマシンで正常にビルドされることを確認します
  3. .vdprojファイルをこのプロジェクトに追加します

次に、AppVeyorはそのファイルを検出し、インストーラーをビルドして、ビルドアーティファクトページでダウンロードできるようにします。

参考文献

私の腸の感覚から、私たちは本当に、本当に「タスク完了」に近づいています。

作業を始めれば、もうすぐ完成する気がしません。 Visual Studio Projectの使い方や、現在の計画もわかりません。 この仕事をするとしたら、フルタイムで数日かかると思います。

あなたはこれに多大な努力を払ったので、私はあなたにこれを話すことに満足していませんが、私は間違いなくこの問題に取り組むボランティアをしません。 PythonTurtleは、私がそれを改善するために1時間以上費やしていたので、今の私の人生の優先事項に近いわけではありません。

この問題がなければ何も価値がないと言って、他の問題からこの問題を指摘することで私は迷惑ですか? 私はあなたが他の問題に取り組むのを止めません、その努力が私に無駄に見えるのでおそらく参加しないでしょう、しかし私はあなたをブロックしません、そしてあなたがコードレビューや小さなことのために私を必要とするなら、喜んでそうします。

これについて別の考えを持っています。 「私はWindowsコンピュータを持っておらず、購入する予定もありません」とあなたは言います。 リストした項目を実行することに反対するのが、このチケットを十分に実行したためである場合、またはWindows関連の作業に時間を費やしたくない場合は、そうです、それは公正な反対です。

問題がWindowsライセンスにお金をかけたくないということであるなら、多分それは解決可能です。 1つのアイデアは、ReactOSを使用して、それがVisual StudioProjectを実行するかどうかを確認することです。 ReactOSがオプションでない場合は、Windowsライセンス/マシンを入手できるかもしれません。 それが役に立ったら教えてください。

それが役に立ったら教えてください。

Windowsでのプログラミングに_熱心_な人を知っていますか? WindowsはPythonにとって厄介な環境です。 「Python + Windows」がうまく調和しているという誤ったイメージに貢献したくありません。それだけです。

MSIインストーラー(WiX、 WiX.Py )を構築するための代替ソリューションについては、 https: //github.com/PythonTurtle/PythonTurtle/issues/108#issuecomment-683420022を参照して

誰かがそのショットを与えたいですか?

そうではないので、ボランティア候補が到着するまで待つと思います。

タスクリスト...

  • [] __Linux __:pyinstallerのビルドが成功しました

    • [] GitHubアクションで自動化

  • [] __macOS __:pyinstallerのビルドが成功しました

    • [] GitHubアクションで自動化

  • [] __Windows __:pyinstallerのビルドが成功しました

    • [] GitHubアクションで自動化

進歩を遂げるのに役立ついくつかのヒント:

  • [x] python3 setup.py clean bundleを使用すると、すべてのバイナリバンドルを構築できます(PyInstallerが使用されます)。
  • [x]私が覚えているように、バイナリはすべてのプラットフォーム(Windows用の.exeを含む)で正常
  • [] WindowsユーザーはWindowsインストーラーを期待しているようです; これは、MSIまたはWiX.Pyインストーラーである可能性があります(どちらもまだ準備されていません)。
  • [] Gitタグをmasterにプッシュするたびに、GitHubアクションはバイナリをGitHubリリースに自動的にプッシュする必要がありactions / create-releaseのようなものを使用したい場合があり

私が投稿したMicrosoftDeveloper Communityのヘルプリクエストに対して@ judejから非常に良い回答が

結論:MSIのボランティアはいませんが、さらに2つの興味深いプロジェクトがあります。1つはインストーラーをビルドし、もう1つはPythonZIPアプリをビルドします。

  1. pynsist –_Pythonアプリケーション用のWindowsインストーラーを構築するためのツール。 [...] Python自体をバンドルして、Pythonがインストールされていない人にアプリケーションを配布できるようにします_
  2. shiv

これは、評価する価値のある2つの優れた選択肢になる可能性があります。 ありがとうジュード! :100 :: medal_military:

いいね。 最近、 PyOxidizerについても聞いたことがディスカッション)を100%理解したかどうかはまだわかりませんが、私たちが望むことを実行できる可能性があります。

週末にshivこれをやってみようと思います。 PyOxidizerを試してみてください。そうすれば、メモを比較できます。

申し訳ありませんが、私は数日前に新しい仕事を始めました、そして私は何もする時間がありません:(

PyOxidizerは、私には実験のように聞こえます。Rustを使用して作成されたOSネイティブレイヤーである「RustVM」で実行されるPythonアプリケーション。 これがどのようなメリットをもたらすのかわかりません。 私たちが実行しているPyInstallerセットアップは、すべてうまくいきませんか? :3rd_place_medal:

shivは、まったく新しいアプローチ(リリースアーティファクトの「ポートフォリオ」の新機能)であり、視聴者に提供するのに興味深いかもしれません。 私はそのアイデアがスリル満点だと思います(たとえ少数の人がそれを使うかもしれないと賭ける準備ができているとしても)。 :2nd_place_medal:

pynsistは、私たちが探しているMicrosoftWindowsインストーラーのように聞こえます。 これにより、Windowsユーザーが期待するようなユーザーエクスペリエンスが提供される可能性があります。:one:インストーラーのダウンロード、:two:実行してスタートメニューエントリをインストールおよび追加、:three:スタートメニューからアプリケーションを起動。 :1st_place_medal:

pynsistの欠点はWindowsのみです。 MacとLinuxで(LinkedInから)Shivを進めようと思います。

このページは役に立ちましたか?
0 / 5 - 0 評価