Ответ 1
Смотрите http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html#option-reference и посмотрите на параметр --resources. Например:
python setup.py py2app --resources foo
Если это была оболочка script, это было бы совершенно правильной вещью. Для двоичного исполняемого файла это немного более взломанно. Во-первых, в документации p2app четко сказано "не для кода!". Во-вторых, в документации по OS X говорится, что нельзя загружать исполняемые файлы в каталог ресурсов. Основной причиной этого является подписание кода: настройки по умолчанию "запечатывают" все в Ресурсах как часть основной подписи приложения, но отдельные исполняемые файлы не должны быть запечатаны таким образом, они должны быть подписаны отдельно.
Однако, все, что сказано, оно все равно будет работать. За исключением того, что он, вероятно, не получит разрешения + x, поэтому после шага py2app вам нужно будет "chmod + x MyApp.app/Contents/Resources/foo", чтобы сделать его выполнимым.
Вы также можете использовать файлы distutils package_data, data_files и/или MANIFEST для добавления произвольных файлов с произвольными относительными путями, что может быть лучшим решением, но это сложнее.
В любом случае, в script, вы должны использовать связанный с пакетом путь, к которому вы можете легко получить доступ через PyObjC. Учитывая, что вы используете исполняемый файл PowerPC, вам может потребоваться такая обратная совместимость, на которую вы не можете положиться, и в этом случае вам может потребоваться просто "../Resources/foo", но в противном случае это выглядит следующим образом:
import Foundation
# ...
bundle = Foundation.NSBundle.mainBundle()
path = bundle.pathForResource_ofType_('foo', None)
Затем вы можете запустить его с помощью NSTask или подпроцесса, Popen, os.system и т.д.