2013-04-24 1 views
0

Я хочу сделать приложение Cocoa OS X. Я бы предпочел использовать скрипты python в своем ядре. Однако не уверен, насколько это безопасно. Я знаю, что проникновение питона довольно велико, но как насчет конфликтов версий и миграций? Стоит ли комбинировать всю среду исполнения python в приложении OS X?Какао: насколько безопасно создавать приложение, которое связано с подпрограммами python?

Спасибо.

+0

Что вы считаете «небезопасным»? Как вы будете ссылаться на код Python? – zneak

+0

@zneak небезопасно - нерабочее приложение. Код Python вызывается с помощью 'NSTask'. –

+0

Почему вы хотите использовать скрипты python в своем ядре? В основном, все, что может сделать Python, вы также можете сделать с Objective-C и Cocoa. – dreamlax

ответ

2

Итак ... что это действительно сводится к проблемам совместимости версий, что-то, что языки сценариев, как известно, плохо при сохранении. Python делает лучше, чем большинство, но это все еще довольно проблематично.

Apple имеет Обычно отправил унаследованные версии интерпретаторов в системе именно по этой причине. Таким образом, если вы полагаетесь на систему, установленную на Python, я бы рекомендовал блокировать определенную версию. То есть используйте /usr/bin/python2.6, а не общий /usr/bin/python.

Альтернатива, так как вы заявляете; свяжите интерпретатор python и любые необходимые ресурсы в вашем приложении. Это немного боль, но это касается проблемы совместимости. Более или менее; реальность такова, что Python, фактически, является интерфейсом к ОС и, таким образом, достаточно велик, чтобы разбить любой выпуск. Впрочем, об этом мало что можно.

Другая возможность - это маршрут, который предлагает @kindall; используйте PyObjC и полностью реализуйте приложение Cocoa или в основном на Python. Работает отлично. Был там, сделал это, и не сделал бы это снова, честно говоря, поскольку проблемы обслуживания/отладки широкомасштабных приложений, написанных на скриптах, являются неприятными.

В качестве альтернативы вам может потребоваться изучить с помощью Lua (http://www.lua.org), поскольку он очень разработан для применения в приложениях. У Lua есть крошечный интерпретатор, и вы можете полностью контролировать, какие функции вашего приложения доступны во время выполнения. Например, пользовательский интерфейс World of Warcraft в основном реализован, поскольку Lua склеивает набор быстрых примитивов UI. Полностью настраиваемый на стороне клиента, что очень впечатляет, если учесть последствия безопасности.

+0

Ничего себе, много вариантов. Благодарю. Правильно ли я понимаю, что после того, как вы сделали все выше, вы предпочитаете путь LUA? Я немного знаком с этим, поэтому я мог это сделать.Моя идея состоит в том, чтобы создать кросс-платформенное консольное приложение, которое можно использовать за пределами пользовательского интерфейса и связать его с конкретными «контейнерами» платформы (Foundation, Forms и т. Д.). Совсем так же, как и Sublime Text. –

+0

Я был ведущим инженером на PyObjC, так как Guido выгнал его из Python в 1994 году до ~ 2003ish (Ronald Oussoren, тем не менее, внес гораздо большую ценность, чем я когда-либо делал, и теперь полностью взял на себя проект) и, да, если бы я шел по маршруту, который вы описали, я бы пошел с Lua .... – bbum

+1

Поскольку вы упомянули Sublime Text, обратите внимание, что они отправляют в приложение приложение zip-дистрибутива Python (Python 3.3 в Sublime Text 3 бета). См. Sublime Text.app/Contents/MacOS/python3.3.zip. – jatoben

2

Вы должны использовать py2app. Он объединит исполняемый файл Python, все необходимые библиотеки и ваш сценарий вместе в один исполняемый файл. Затем вы можете добавить в этот пакет приложений другие исполняемые файлы (например, ваши объекты Objective-C).

+0

Спасибо за ссылку. Я посмотрю, если это послужит цели. Если честно, я бы тоже связал сам python, но я очень обеспокоен весовыми накладными расходами. Я отдам его. Еще раз спасибо. –

+0

Решает немного другую проблему, чем у ОП, но, безусловно, стоит исследовать! – bbum

+2

Поверьте мне, вы будете счастливы, если поместите Python в свой комплект приложений. В компании, в которой я работаю, есть многоплатформенное приложение с API Python, и мы использовали используемый Python для системы, но это был кошмар поддержки. Вместо этого мы теперь собираем версию Python, которую мы знаем, которая работает, и поддержка намного проще. Кстати, я не предлагаю вам писать все ваше приложение на Python, вы можете создать пакет приложений с py2app, а затем объединить его или включить в него другой комплект. – kindall