2

Я использую OSX, и я делаю приложение, в котором есть программа Python в папке « Resources », сценарий Bash вызывает скрипт Python для запуска при запуске приложения. Сценарий находится в папке MacOS в приложении и называется так же, как приложение. У меня есть этот скрипт Bash:

#!/bin/bash
clear
python /Applications/Converter.app/Contents/Resources/Converter.py

Я думал, что сценарий Bash будет выполняться при запуске приложения, в результате чего сценарий python запускается через окно терминала. Однако, когда я дважды щелкаю приложение, ничего не происходит!

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

Что мне здесь не хватает?

3 ответа3

3

Вот лучшее решение вашей проблемы, если вам абсолютно необходимо, чтобы это был пакет .app :

В вашем скрипте Converter.app/Contents/MacOS/Converter запустите ваш скрипт на Python командой "open":

open $(dirname "$0")/../Resources/Converter.py

(Я проделал трюк с относительным путем выше, чтобы вы не жестко программировали абсолютный путь, который сломался бы, если бы вы переместили ваш .app .)

Убедитесь, что ваш скрипт Resources/Converter.py имеет верхнюю часть Python:

#!/usr/bin/python

Убедитесь, что MacOS/Converter и Resources/Converter.py помечены как исполняемые (используйте для них chmod a+x filename ).

Я протестировал эту настройку, и команда open успешно выяснила, что файл .py должен быть открыт в Терминале, и я ничего не делаю. Я не думаю, что я ранее связывал файлы .py с Terminal.app ранее в этой системе, поэтому я думаю, что эти инструкции не потребуют каких-либо дальнейших шагов даже в чистой системе.

1

Самый простой способ создать скрипт, который запускается двойным щелчком и который запускается в новом окне терминала, состоит в том, чтобы завершить имя файла «.command». Затем вы можете дважды щелкнуть по самому файлу сценария, без необходимости в .apple /package.

Если вы хотите выполнить команды bash перед Python, вы можете поместить обе команды в один и тот же файл, но обернуть код Python в оператор bash exec . Сценарии TCL делают это очень часто. Если вам нужен только код Python, а не код bash , измените шебанг вверху на #!/usr/bin/python (или там, где Python живет в вашей системе).

Лично мне не нравится ничего, что представляется как .app, но на самом деле запускается в окне терминала, а не является его собственным настоящим приложением. Единственный раз, когда я видел это, была конечная точка Ixia Chariot для OS X. Я не рассматривал ее несколько лет, но она все еще может работать таким образом. Это бесплатная загрузка. Возможно, вы захотите взять его и посмотреть, как они это сделали, и, возможно, опубликовать ответ на свой вопрос. Я думаю, что их решение заключалось в упаковке файла настроек терминала в их приложение. Я думаю, что это вызвало запуск отдельного экземпляра Terminal.app со своими странными пользовательскими настройками, что раздражало новым и захватывающим способом. :)

0

Попробуйте изменить сценарий , чтобы иметь .command или .tool расширения, но , возможно , она не может работать в недавнем OS X.


Однако, если вам нужно, чтобы скрипт был приложением, вы должны создать его.

Базовая структура приложения Mac:

MyApp.app/
   Contents/
      Info.plist
      MacOS/
      Resources/

Затем скопируйте ваш скрипт в MacOS/ (с тем же именем, что и ваше приложение), который должен содержать автономный исполняемый код приложения. Все остальные ресурсы идут в Resources/ .

Пожалуйста, посмотрите на скрипт appify Томаса (или его версию Матиаса ), который в основном выглядит так:

#!/usr/bin/env bash

APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"

if [ -a "$APPNAME.app" ]; then
  echo "$PWD/$APPNAME.app already exists :("
  exit 1
fi

mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"

echo "$PWD/$APPNAME.app"

Использование:

appify foo.sh "Bar"

Источник: Как создавать простые приложения для Mac из сценариев оболочки


В качестве альтернативы вы можете использовать:

  • DropScript, который позволяет создавать новые приложения (например, скрипты, написанные на sh, perl и т.д.).
  • Platypus - приложение, которое создает собственные приложения Mac OS X из интерпретируемых сценариев, таких как сценарии оболочки или программы Perl, Ruby и Python.
  • Создайте его в какой-нибудь IDE (например, Eclipse), в которой есть такие опции.

Или создайте его вручную:

  • создать структуру папок приложения,
  • поместите ваш скрипт в: MyApp.app/Contents/MacOS/MyApp.app
  • сделать файл исполняемым

Другими словами (Джино):

  1. Создайте свой сценарий оболочки (ex command.sh)
  2. Дайте ему разрешения на выполнение (chmod 755 ./command.sh)
  3. Получить информацию → Открыть с помощью: → (связать приложение терминала)
  4. Получить информацию → (поместите значок, который вы хотите на него)

Смотрите также:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .