Способы вызова python и Spyder в OSX

Недавно я купил MacBook и установил Python на него через Anaconda. Здесь информация о версии:

Python 2.7.6 |Anaconda 1.8.0 (x86_64)| (default, Nov 11 2013, 10:49:09) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin

Я хотел бы иметь возможность выполнить все следующие действия:

  • Запустите Spyder без необходимости запуска приложения Launcher (например, введя вещи в Spotlight и Quicksilver).
  • Запустите код Python из Finder, предположительно, дважды щелкнув файл .py или выбрав и нажав Cmd-O
  • Запустите код Python, введя имя Python script в Quicksilver (как если бы это была обычная программа)

Вот что я пробовал:

  • (ничего, без идей здесь)
  • Я связал файлы .py с /Users/kuzzooroo/anaconda/python.app/Contents/MacOS/python и сделал их исполняемыми (chmod u + x). Когда я пытаюсь запустить приложение, никогда не запускается, и я не получаю сообщение об ошибке (не знаю, где искать)
  • Сделал исполняемые файлы и попытался запустить их из Spotlight. Тот же результат, что и # 2.

Вот что я могу сделать:

  • Запустите мой код из окна терминала, если у меня есть правильный shebang сверху и сделали исполняемый файл
  • Создайте приложение, используя py2app. К сожалению, этот метод имеет следующие недостатки:
    • Я часто изменяю свои сценарии и предпочитаю не запускать py2app каждый раз, когда я делаю
    • Даже для тривиального script полученное приложение составляет 7 МБ
    • Чтобы запустить приложение в некоторых контекстах, я должен копаться в комплекте, чтобы найти фактический "исполняемый файл Unix" и запустить его вместо

Как только я буду работать, я заинтересован в следующем: A. Управление скриптами, создающими окно консоли при их запуске, и которые не выполняются B. Контроль того, исчезает ли окно консоли, когда script завершает или ждет пользователя (я), чтобы закрыть его
Тем не менее, я подозреваю, что может быть легко понять, как это сделать (или, возможно ли это), как только я выясню, как я буду использовать мои сценарии в первую очередь.

Ответы

Ответ 1

Чтобы сделать spyder вызываемым из Spotlight или Finder:

  • Найдите, где исполняемый файл spyder запущен в терминале:

    which spyder
    

    Это должно привести к ~/anaconda/bin/spyder, если вы установили spyder через Anaconda, /opt/local/bin/spyder, если вы использовали MacPorts или что-то подобное.

  • Создайте файл spyder в каталоге Applications и сделайте его исполняемым. Затем залейте его выводом предыдущей команды, а затем &; exit:

    touch /Applications/spyder
    chmod +x /Applications/spyder
    echo -e '#!/bin/bash'"\n~/anaconda/bin/spyder &\nexit" >> /Applications/spyder
    
  • В разделе Terminal → Preferences → Profiles → "default profile" → Shell → Когда оболочка завершается: выберите "Закрыть, если оболочка вышла чисто"

Дополнительно:

  1. Скачайте значок spyder из здесь и откройте его в Preview. Скопируйте его содержимое, нажав cmd + C.

  2. В Finder найдите /Applications/spyder и откройте панель "Получить информацию", нажав cmd + I. Выберите значок в верхнем левом углу с помощью мыши и нажмите cmd + V.

Ответ 2

Принятый ответ имеет два недостатка: при запуске spyder появляется окно консоли, а на доке не сохраняется значок spyder. Эти drawbakcs можно избежать, создав надлежащий пакет приложений для Mac для spyder, что на удивление легко сделать.

Чтобы преобразовать /usr/local/bin/spyder3 (результат which spyder3 на моем компьютере) в традиционное приложение Mac:

  • Создайте пакет приложений для Mac (в основном, структуру папок, содержащую исполняемый файл):

    cd /Applications
    mkdir -p spyder.app/Contents/MacOS
    echo -e '#!/bin/bash'"\n /usr/local/bin/spyder3 [email protected]" >> spyder.app/Contents/MacOS/spyder
    chmod +x spyder.app/Contents/MacOS/spyder
    
  • Создайте текстовый файл с именем Info.plist в папке "Содержание" (т.е. в файле spyder.app/Contents/Info.plist) со следующим содержимым:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
    <plist version="0.9">
    <dict>
    <key>CFBundleExecutable</key>
    <string>spyder</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>3.1.4</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>3.1.4</string>
    </dict>
    </plist>
    
  • (необязательно) Создайте значок приложения, как на шагах 4 и 5 принятого ответа.

Voilà, spyder стал внезапно намного более дружественным к Mac!

РЕДАКТИРОВАТЬ:
Можно дополнительно улучшить дружелюбие spyder:

  • Предотвращение появления пиктограммы ракета-носителя python, помимо значка spyder
    Для этого снимите флажок в программе "Инструменты" → "Настройки" → "Консоль iPython" → "Графика" → "Активировать" (matplotlib)

  • Создание spyder редактора по умолчанию для .py файлов.
    Это сложнее. Сначала убедитесь, что содержимое spyder.app/Contents/MacOS/spyder читает

    #!/bin/bash
    /usr/local/bin/spyder [email protected]
    

Создайте затем автомат script, содержащий одно действие "Выполнить оболочку script". Вставьте в него следующее (bash) script:

for f in "[email protected]"
do
    open /Applications/spyder.app --args $f
done
if [ -z "$f" ]; then
    open /Applications/spyder.app --args ~
fi

Выберите "Как аргумент" для входных данных, как показано на скриншоте ниже ( "-args ~" отсутствует на скриншоте, но это необходимо, чтобы избежать ошибки при запуске spyder без какого-либо файла). automator  script
Сохраните этот script как приложение под названием "SpyderOpener", например.

Сделайте SpyderOpener приложение по умолчанию для открытия .py файлов (с помощью диалогового окна Finder "Получить информацию" в файле .py)

Ответ 3

Перейдите в anaconda/bin, найдите spyder (или IPython и т.д.) и перетащите его в док-станцию, но поместите его в раздел документов в конце. Тогда у вас будет легкий доступ к нему, и когда вы нажмете на него, Mac OS X запустит оболочку, которая ее запустит, и она появится в разделе "Приложения", чтобы вы могли запустить запущенное приложение, нажав на него.

Ответ 4

Вы можете использовать Automator для создания приложения, которое будет запускать Unix Script. Откройте Automator, когда он запрашивает тип документа, поставьте "Приложение"

Найдите и нажмите "Запустить оболочку Script". Вы можете оставить /bin/ bash таким, какой он есть, и ввести в поле местоположение spyder (как указано, набрав шпионер в терминале). Затем вы сохраняете файл, и все готово. Это также избавляет от проблемы, возникшей у меня, когда терминал работает в фоновом режиме и дает вам приложение, которое вы можете перетащить на док-станцию. Вы также можете изменить логотип, как было предложено выше.

(я сделал это с Mac OS 10.10 и Anaconda 2.3.0)

Ответ 5

Вы можете открыть spyder, указав Quicksilver на ~/anaconda/bin/spyder (вы можете добавить его в свой каталог, чтобы он всегда его обнаруживал).

Ответ 6

Очень простой метод, не требующий использования Terminal, по сути, заключается в создании пакета spyder.app в Applications и копировании exec файла spyder из Anaconda в эту папку. Нажав на пакет, вы запустите spyder как приложение, и вы можете щелкнуть правой кнопкой мыши значок док-станции, чтобы сохранить его в док-станции.

Ниже приведены пошаговые инструкции.

Сначала мы создаем папку spyder.app в приложениях:

  1. Откройте папку "Приложения" в Finder.

  2. Щелкните правой кнопкой мыши и создайте "Новая папка".

  3. Назовите папку "spyder.app" и разрешите расширение .app.

Затем мы копируем exec spyder file:

  1. В новом окне Finder откройте свою домашнюю папку (в качестве значка она должна иметь простое изображение дома). Для быстрого доступа нажмите клавиши Shift + Command + H, когда Finder открыт.

  2. Откройте папку anaconda3, а затем откройте папку с именем "bin".

  3. Найдите исполняемый файл с именем "spyder" и щелкните правой кнопкой мыши, чтобы скопировать файл.

Примечание: если anaconda3 не установлен в вашем домашнем каталоге, просто найдите "anaconda3" с точными совпадениями имен файлов в Finder и откройте файл.

Вставьте скопированный exec файл в пакет spyder.app:

  1. В окне Finder откройте "Приложения", щелкните правой кнопкой мыши созданный выше spyder.app и выберите "Показать содержимое пакета".

  2. Щелкните правой кнопкой мыши в окне и вставьте исполняемый файл.

Теперь, когда вы вернетесь в папку "Приложения", дважды щелкните пакет spyder.app, и программа spyder запустится. Щелкните правой кнопкой мыши значок в доке и выберите "Сохранить в доке", чтобы приложение оставалось в доке, когда оно не запущено. Вы также можете создать значок для приложения, как указано в 4 и 5 оригинального ответа.

Ответ 7

Я считаю, что самый простой способ доступа к spyder в macOS - через терминал! вы удерживаете в док-станции терминал, и когда вы хотите открыть spyder, вы открываете терминал и вводите spyder в терминал, а затем возвращаете ключ! Мне нравится этот метод, потому что когда я открываю терминал и нажимаю стрелку вверх один или несколько раз, я получаю доступ к spyder и запускаю его с нажатием return! Я знаю, что это очень очевидный и простой метод, но я хотел напомнить об этом!

Ответ 8

Супер быстрый способ без какого-либо навыка - найти exe (which sypder достигнет этого) во что-то вроде //anaconda3/bin/spyder. Дублируйте этот файл и поместите его на рабочий стол. Когда вам это нужно, просто дважды щелкните.

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

Изменить: Еще более быстрый способ будет сделать: command + spacebar затем введите Spyder.