1

スクリプトのディストリビューションを構築しようとしています。py2exe を使用して exe ファイルを作成しましたが、正常に動作します。py2app を使用して、Mac 用に似たものを作成しようとしています。ただし、コマンドを使用するとこのエラーが発生します

python setup.py py2app

エラー メッセージ: Python バイナリには共有ライブラリ (またはフレームワーク) がまったくありません

これが事実である理由は何ですか?メインスクリプトファイルのmathなどの標準モジュールとは別に、BeautifulSoupのようないくつかのモジュールをインポートしています。Python 2.7を実行している64ビットのWindowsマシンですべてを実行しています。

4

1 に答える 1

7

py2appMacで実行する必要があります。

このpy2appコードは、実行に使用されているPythonのコピーを使用して、スタンドアロンの実行可能ファイルをビルドします。そのPythonがMacビルドでない場合(Windowsで実行している場合はそうではありません)、Mac実行可能ファイルを作成することはできません。

libpython.dylib技術的には、エラーメッセージは、またはPython.frameworkに関連付けられたを見つけることができないことを示していますsys.executable。これは本当ですが、この場合はもっと役立つ可能性があります。


py2appのような代替手段がありますがcx_freeze、それらはすべて同じように機能します。つまり、実行に使用されたPythonインストールから実行可能ファイルを構築します。

したがって、WindowsでMac実行可能ファイルを作成する場合、それを自動化する方法はありません。

しかし、いくつかの可能性があります。

まず、中古のMacMiniをおそらく100ドル程度で購入できます。開発用にセットアップし、(環境設定の共有ペインで)リモートログインアクセスをオンにして、隅で実行したままにします。Windowsからは、小さな4ライナーsshスクリプトを使用して、ソース、ソース、結果をチェックアウトし、Windowsボックスに転送するようにMacに指示できpy2appますzipscpまたは、Windowsファイル共有を介してコピーするかftp、チェックするか、チェックします)。ソース管理などに)。

何らかの理由でそれが不可能な場合は、少なくともたまにMacにアクセスできることを願っています。(そうでない場合、どのように物事をテストするつもりですか?)その場合は、でアプリを作成して圧縮しpy2app、テンプレートとして使用できます。新しいビルドを作成するたびに、テンプレートの内容を変更するだけで、Windowsでそれを実行できます。

メインfoo.pyスクリプトはになりfoo.app/Contents/Resources/foo.pyます。他のPythonモジュール(標準ライブラリ、サードパーティ、または独自のコード)は、いくつかの例外を除いて、のfake-standard-libraryzipファイルに入りますfoo.app/Contents/Resources/lib。すべてのC拡張モジュールは、のようなディレクトリに入りますfoo.app/Contents/Resources/lib/python2.7/lib-dynload

C拡張機能を変更しない限り、Pythonの新しいバージョンにアップグレードするか、手動でインストールする方法がわからない新しいサードパーティライブラリを追加します(たとえば、経由で卵として入手したためeasy_install)。これは引き続き機能します。これらのいずれかを行う場合は、Macに戻って、を使用して新しいテンプレートを作成する必要がありますpy2app

Macにまったくアクセスできない場合はpy2app、必要なものがすべて含まれている他のプロジェクト用に事前に作成されたアプリを見つけることができる場合があります。その場合は、それをテンプレートとして使用できます。しかし、これは非常に大きな問題です。

于 2013-03-13T23:20:46.490 に答える