4

重複の可能性:
Objective-C から Python を呼び出す

私は長年の Python プログラマーであり、短時間の Cocoa プログラマーです。私は PyObjC を使い始めたばかりで、物事を成し遂げるのがどれほど簡単かは本当に驚くべきことです。そうは言っても、PyObjC モデルを使用したコントローラーに純粋な ObjC を使用してみたかったのです。Python を Python に、Objective-C を Objective-C にすると楽しいかもしれません。とにかくやってみる価値はあると思いました。

Objective-C から Python を呼び出す方法を理解できない、または何も見つけられないことを除けば、逆の場合のみです。誰かがこれに関するリソースを教えてもらえますか? (PyObjC サイトにあるかもしれませんが、何を探しているのかわかりませんか?)

編集: 基本的なレベルでは、Python モジュールを呼び出してネイティブの ObjC データ型を取得できることに最も関心があります。

4

2 に答える 2

3

考えられるアプローチはいくつかあります。最も魅力的なのは、 py2app を使用して、 を使用してプリンシパル クラスにアクセスできる Python コードからロード可能なバンドルをコンパイルすることですNSBundle。残念ながら、このユース ケースは py2app 開発者からあまり歓迎されていません。10.5 と 10.6 には、データを Python から Objective-C に戻す際の厄介なメモリ リークなど、いくつかのバグが見つかりました。この時点で py2app を使用することはお勧めしません。

2 番目のアプローチは、埋め込みを反転することです。Python cocoa アプリを作成し、起動時に (main() でも) バンドルから Objective-C コードを読み込みます。既に大規模な Objective-C アプリがある場合、これには少し時間がかかる場合があります。私が知っている唯一の欠点は、Objective-C コードで GC を使用できないことですが、これは PyObjC を使用する際の普遍的な制限です。

最後に、Objective-C コードで Python インタープリターをインスタンス化して、Python コードをロードできます。これは明らかにより複雑ですが、Python コードを挿入したい大規模な Objective-C コードベースが既にある場合に最適なオプションです。Xcode の Python-Cococa アプリケーション テンプレートの main.m ファイルは、この動作を確認するのに適した場所です。

于 2009-11-06T17:37:19.883 に答える
0

おっと、もう少し検索する必要があったと思います:

Objective-C から Python を呼び出す

于 2009-11-06T17:36:44.067 に答える