web-dev-qa-db-ja.com

PythonでMac OS Xアプリを作成する方法は?

WindowsとMacで動作するGUIアプリケーションを作成したい。このために、Pythonを選択しました。

問題はMac OS Xにあります。

Mac用の「.app」を生成するには、py2appとpyinstallerの2つのツールがあります。

  1. py2appはかなり良いですが、パッケージにソースコードを追加します。コードを最終ユーザーと共有したくありません。
  2. PyinstallerはUNIX実行可能ファイルを生成するので、Macで実行するにはどうすればよいですか?この実行可能ファイルでバンドルを作成しましたが、結果の「.app」が機能しません。

質問は次のとおりです:

  1. 実行可能ファイルにソースコードを含めるようにpy2appを構成して、最終ユーザーが私のプログラムにアクセスできないようにする方法を教えてください。
  2. UNIX実行可能ファイルをMac ".app"に変換する方法
  3. PythonコードをGCCでコンパイルする方法はありますか?
  4. Windowsでは簡単ですが、Pythonコードから「exe」ファイルを作成して動作します。Mac用の単一のファイル「app」を作成することは可能ですか?

追伸Python 2.7、wxPython、py2exe、py2appおよびpyinstallerの2台のコンピューター(WindowsおよびMac用)を使用しています。

また、私はこれらのサイトをチェックアウトしました:

32

実行可能ファイルにソースコードを含めるようにpy2appを構成して、最終ユーザーがプログラムにアクセスできないようにする方法を教えてください。

pythonインタプリタを非常に真剣にハッキングしない限り(そしてマングルバージョンを含めて))、適度に熟練した意志の強いユーザーからソースを隠すための本当に良い方法はありません。これはWindowsでも同様ですまた、基本的に、真のソースとバイトコードのどちらを含めても、ソースのかなりクリーンなバージョンを復元できます。さらに重要なのは、実際のソースコードを含めない限り(バイトコードとは対照的に)、インタプリタバージョン)。

UNIX実行可能ファイルをMac ".app"に変換する方法は?

UNIX実行可能ファイルとはどういう意味ですか?ダーウィン(OS X)バイナリ[実際にはUNIXではない]?これは、すでに述べた種類のツールを使用して行うことができますが、ライブラリの依存関係を回避するために慎重に行う必要があります。

コマンドラインバイナリをウィンドウに配置する単純なラッパーがすべて必要な場合は、達成するのは非常に簡単で、無料のXCodeスイートには、役立つ出力例がいくつかあります(出力したい場合は、その出力によって異なります)。

PythonコードをGCCでコンパイルする方法はありますか?

GCCはPythonをコンパイルしません。それは別の言語です(ただし、gccファミリには、Pythonではなく複数の言語のフロントエンドをサポートするツールがあります)。 PythonをCに変換しようとするツールがあり、それを真のバイナリにコンパイルできますが、これは特定のタイプの構成とプロセス(および制限)を回避するプログラムでのみ機能します)ライブラリも適用する必要があります。
これを可能にする1つのプロジェクトはCythonです。一部のタイプのコード(ほとんどが数値コード)でうまく機能しますが、特に複数の異なるコンピューターで実行されるものを作成したい場合は、インストールして悪用することは簡単ではありません。

Windowsでは簡単ですが、Pythonコードから「exe」ファイルを作成して動作します。Mac用の単一のファイル「app」を作成することは可能ですか?

これについては、私は懐疑的です-非常に懐疑的です。 OS Xの場合と同じように、exeにはほぼ間違いなくソースコードが含まれています。

かなり簡単なトリックの1つは、ソースコードを暗号化し、その場で解読することですが、これは、やりがいのある問題よりも厄介な問題のように思えます。

8
GregD

PyInstallerはMac OSXでウィンドウ化された実行可能ファイルのバンドルを自動的に作成します。 ypinstaller.pyを実行するときは、オプション「--windowed」を必ず渡してください。

この機能はpyinstallerのウェブサイトに記載されています

6
Dicky Tsang

WxPythonに完全にコミットしていない場合(およびクロスプラットフォームを探している人のためにPython GUIフレームワーク))、チェックアウトすることをお勧めします Kivy 。これはクロスプラットフォームです。 、GPUアクセラレーションを使用すると、 アプリのパッケージ化 が実行されます。簡単にアクセスでき、十分に考え抜かれたアーキテクチャを備えており、インターフェイスの面で驚くほどの柔軟性を提供します。クロスプラットフォームを作成するために見つけた最良の方法Python GUIアプリ。

5
Jonathan Potter

cx_Freezeが選択されました。 pythonプログラムをMac OS Xアプリにパックして使用します。これは魅力のように機能します。

4
handsomegui

Automator は、単一のファイルに含まれているPythonスクリプトの迅速でシンプルなソリューションとしてすでに言及されていますが、Automator UIには非常に多くのオプションがあり、実際にそれを行う方法が明確でないため、ステップバイステップの説明を提供します(ヨセミテで動作することが確認されています):

  1. Automatorで選択 File > New Applicationをドキュメントタイプとして選択します。
  2. 次に、左側のActionsタブが選択されていることを確認し、検索ボックスに「run」と入力します。他のオプションの中でRun Shell Scriptが表示されます—これをダブルクリックすると、右側のパネルにエディタウィンドウが表示されます。
  3. Shellドロップダウンメニューから/ usr/bin/pythonを選択します。
  4. Pythonコードを編集ウィンドウに貼り付けてから、 File > Save

デフォルトでは、アプリは$HOME/ApplicationsとSpotlightに表示されます。

独自のアイコンを設定し、メニュー付きのタスクバーアイコン、ログウィンドウなどの機能を追加したい場合は、 Platypusopen- source MacOSネイティブバンドルを作成するためのアプリ。

2
ccpizza

2:「変換」することはできませんが、CFBundleExecutableを「何か」に設定して、実行可能ファイルを.appファイルのApp.app/Contents/MacOS/somethingに移動できます。これは一般に推奨されません。

1
tkbx

cxFreeze は利用可能な最善のソリューションです。まずpythonを使用してプログラムまたはアプリケーションを作成し、アプリケーションを作成する setup ファイルを作成してから、ビルドコマンドを使用したアプリpython setup.py build、必要に応じて、いくつかの変更を行う必要があります。

0
Nilanj

私は大きなPythonプロジェクトで試していませんが、自分のスクリプトの場合、私が見つけた最も簡単な方法は Automator を使用することでした

Run Shell Scriptアクションを使用してアプリプロジェクトをインタラクティブに作成し、スクリプトをエディターに貼り付けて、シェルプログラム(/ usr/bin/python)、最後にプロジェクトを保存します。そして、あなたはあなた自身にMacネイティブアプリを持っています。

AutomatorはAppleScriptで駆動することもできます。したがって、このpy-2-app変換プロセスをビルドスクリプトにパイプライン処理できます。

私はそれでGUIプログラムをテストしたことがないので、あなたがそれで満足するかどうかわかりません。しかし、引用されているサードパーティのすべてのpythonモジュール/アプリケーションがどれだけ適切に維持され、どれくらいの期間続くか疑問に思うかもしれません。OSXにバンドルされています。 Appleが本当にうんざりしていない限り、Automatorはおそらくとどまるでしょう。

0
kakyo

ライブラリのバージョンに対処する必要がないようにpy2exeをWindowsユーザーに使用していたため、コンパイルされたプログラムを分解しましたが、pythonバイトコードファイルが含まれています。違反する可能性はありますが、それらの内部を見るライセンスの、実際には、コンピュータがそれらを実行できる場合、私はそれらを読み取ることができます。Cプリプロセッサを介してpythonプログラムをgccでコンパイルできます(探してみてくださいgoogleの2c.pyの場合)、GCCをサポートするものがあるかどうかはわかりません。繰り返しますが、これらを使用してもセキュリティは得られませんが、速度が大幅に向上します。

0
Perkins

唯一の方法はpy2appです。他に方法はありません。ごめんなさい。あなたが行った研究は非常に堅固で、何も見逃していません。

0
transilvlad

やる気のある人は、おそらくPythonバイトコードをアプリで使用可能なソースコードを再構築する可能性があるため、py2appに対する反対を再考するかもしれません。最終的なユーザーが信頼できない場合、なぜビジネスをしているのですか?彼らと?

0