Могут ли исполняемые файлы, созданные с помощью py2app, включать другие терминальные сценарии и запускать их?

Итак, у меня есть хорошее приложение python для OS X, которое отлично работает. Он запускает внешний сценарий терминала, и я хотел бы включить его в мое приложение python. В идеале я мог бы запустить py2app и связать этот скрипт с ним в исполняемый файл, а затем включить его и запустить в части моего кода на python. Это возможно?

Заранее спасибо!

Extra Edit: Сценарий, который я использую, скомпилирован. Я не могу просто заглянуть внутрь и вставить его.

2 Solutions collect form web for “Могут ли исполняемые файлы, созданные с помощью py2app, включать другие терминальные сценарии и запускать их?”

См. http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html#option-reference и посмотрите параметр –resources. Например:

python setup.py py2app --resources foo 

Если бы это был сценарий оболочки, это было бы совершенно правильной вещью. Для двоичного исполняемого файла это немного более взломанно. Во-первых, в документации p2app четко сказано «не для кода!». Во-вторых, в документации по OS X говорится, что нельзя загружать исполняемые файлы в каталог ресурсов. Основной причиной этого является подписание кода: настройки по умолчанию «запечатывают» все в Ресурсах как часть основной подписи приложения, но отдельные исполняемые файлы не должны быть запечатаны таким образом, они должны быть подписаны отдельно.

Однако все, что сказано, все равно будет работать. За исключением того, что это, вероятно, не закончится с + x разрешениями, поэтому после вашего шага py2app вам придется «chmod + x MyApp.app/Contents/Resources/foo», чтобы сделать его выполнимым.

Вы также можете использовать файлы distutils package_data, data_files и / или MANIFEST для добавления произвольных файлов с произвольными относительными путями, что может быть лучшим решением, но это сложнее.

В любом случае, в вашем скрипте, вы должны использовать связанный с пакетом путь, к которому вы можете легко получить доступ через PyObjC. Учитывая, что вы используете исполняемый файл PowerPC, вам может потребоваться такая обратная совместимость, на которую вы не можете положиться, и в этом случае вам может потребоваться просто «../Resources/foo», но в противном случае это выглядит так:

 import Foundation # ... bundle = Foundation.NSBundle.mainBundle() path = bundle.pathForResource_ofType_('foo', None) 

Затем вы можете запустить его с помощью NSTask или подпроцесса, Popen, os.system и т. Д.

Вы всегда можете включить модуль os и вызвать os.system(script); , Он выполняет данный аргумент в терминале / командной строке. Например:

 import os script = " a big long bash script " os.system(script); 
  • Приложение, построенное с использованием несистемного Python с использованием py2app в pyenv, не работает на других машинах
  • Как передать данные в файл при установке пакета на Mac
  • Где материал «печатает», когда приложение не работает с терминала?
  • Как поместить окно tkinter поверх других?
  • вопрос использования py2app setup.py
  • Как создать приложение Mac OS X с Python?
  • Как изменить имя приложения в строке меню OSX в наборе приложений с чистым Python?
  • как исправить distutils.errors.DistutilsError на py2app?
  •  
    Interesting Posts for Van-Lav

    Как установить кодировку sys.stdout в Python 3?

    Как использовать scikit-learn PCA для уменьшения возможностей и знать, какие функции отбрасываются

    Убийство скрипта, запущенного в процессе через os.system ()

    Escape двойные кавычки для JSON в Python

    Группировка регулярных выражений с несколькими совпадениями

    Как ForwardAgent да, используя ткань?

    Ошибка компиляции DLIB – Не удалось найти Boost

    Python Regex – проверка заглавной буквы в нижнем регистре после

    ошибка элемента последовательности обновления словаря

    Ошибка импорта библиотеки скриптов pcryptter

    Как быстро преобразовать возвращаемый массив numpy-in-Lua numpy в тензоре факела Lua?

    итерация по ряду строк с использованием ws.iter_rows в оптимизированном считывателе openpyxl

    Как преобразовать целое число в шестнадцатеричное без дополнительных «0x» ведущих и «L» конечных символов в Python?

    Python statsmodels OLS: как сохранить изученную модель в файл

    Numpy, проблема с длинными массивами

    Python - лучший язык программирования в мире.