2012-06-05 23 views
6

Właśnie zaczynam uczyć się o integracji aplikacji Python i Mac OS. (Chcę wywołać niektóre metody z Cocoa do Pythona). Wcześniej zapoznałem się z tymi terminologiami - Scripting Bridge, PyObjC i py2app. Co za różnica? Czy PyObjC jest przykładem mostka skryptowego? A kiedy do gry wchodzi py2app?Mostek skryptowy vs PyObjC vs py2app

Odpowiedz

7

Krótka wersja: PyObjC to sposób, w jaki nazywane są interfejsy API systemu Mac OS X, Mostek skryptowy to sposób, w jaki rozmawiasz z interfejsami skryptowymi innych aplikacji. Bardziej szczegółowo:

PyObjC to pomost pomiędzy językiem Python a środowiskiem Objective C (i zestawem wrapperów Cocoa zbudowanych trywialnie na wierzchu tego mostu i fajnymi dodatkami). Jeśli chcesz wywołać metody Cocoa, użyj PyObjC, zazwyczaj importując albo kakao albo podkład.

Mostek skryptowy to pomost pomiędzy językiem Python a systemem skryptów Apple Event. Jeśli chcesz zadzwonić do interfejsu skryptów innej aplikacji, skorzystaj ze skryptu Bridge. (W większości przypadków, jeśli używasz Scripting Bridge, będziesz również chciał zaimportować Foundation, ponieważ Scripting Bridge radzi sobie z takimi rzeczami jak NSArrays, itp.)

Tak więc PyObjC nie jest przykładem mostka skryptowego. Przykładem mostu skryptowego jest, no cóż, Mostek skryptowy lub Appscript (który jest lepszy, ale nie pochodzi od Apple i nie jest już konserwowany).

py2app nie ma nic wspólnego z żadnym z nich; jest to sposób na zawarcie aplikacji Python, wraz ze wszystkimi wymaganymi modułami rozszerzeń, a także niezbędną ilością interpretera języka Python, do pojedynczego pakietu .app, który można rozpowszechniać wśród użytkowników, aby mogli dwukrotnie kliknąć Uruchom. Oczywiście większość takich aplikacji będzie miała GUI, a wiele z nich będzie używać PyObjC do tworzenia tych GUI bezpośrednio w Cocoa (zamiast używać np. PyQt lub wxPython), ale poza tym nie ma prawdziwego połączenia.

+0

Ponadto, w zależności od tego, z którymi aplikacjami próbujesz się zintegrować, możesz znaleźć 'py-appscript' lepszy wybór niż Scripting Bridge. Nie zniechęcaj się z powodu wyłączenia dla deweloperów, jest to wciąż najlepszy interfejs skryptowy do obsługi zdarzeń w firmie Apple, w szczególności do aplikacji z funkcyjnymi interfejsami skryptowymi. http://pypi.python.org/pypi/appscript/ –

+3

Jak wspomniałem powyżej, Appscript nie jest już utrzymywany. W rzeczywistości nie akceptuje już nawet łat od innych ludzi. W końcu przestanie działać, chyba że ktoś inny to przejmie. Mimo to wciąż używam go w wielu aplikacjach, zarówno Python, jak i ObjC, i będę go łatał, zamiast przełączać się na Scripting Bridge i próbować obejść problemy z iTunes i Finderem ... Ale zawsze czuję się zmartwiony o poleceniu go nowym użytkownikom. – abarnert

+1

Przepraszamy. Przeoczyłem twoją wzmiankę o Appscript. Zgadzam się z twoją oceną. –