Итак ... что это действительно сводится к проблемам совместимости версий, что-то, что языки сценариев, как известно, плохо при сохранении. 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. Полностью настраиваемый на стороне клиента, что очень впечатляет, если учесть последствия безопасности.
Что вы считаете «небезопасным»? Как вы будете ссылаться на код Python? – zneak
@zneak небезопасно - нерабочее приложение. Код Python вызывается с помощью 'NSTask'. –
Почему вы хотите использовать скрипты python в своем ядре? В основном, все, что может сделать Python, вы также можете сделать с Objective-C и Cocoa. – dreamlax