Способы вызова 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

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

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

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

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

вот что я can do:

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

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

5 ответов


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

  1. найдите, где находится исполняемый файл spyder, запустив в терминале:

    which spyder
    

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

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

    touch /Applications/spyder
    chmod +x /Applications/spyder
    echo -e '#!/bin/bash'"\n~/anaconda/bin/spyder &\nexit" >> /Applications/spyder
    
  3. в разделе терминал - > настройки - > профили - > "профиль по умолчанию" - > оболочка - > при выходе оболочки: выберите"Закрыть, если оболочка вышла чисто"

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

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

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


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

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

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

    cd /Applications
    mkdir -p spyder.app/Contents/MacOS
    echo -e '#!/bin/bash'"\n /usr/local/bin/spyder3 $@" >> spyder.app/Contents/MacOS/spyder
    chmod +x spyder.app/Contents/MacOS/spyder
    
  2. создайте текстовый файл Info.plist в папке содержимого (т. е. у spyder.приложение/содержание/информация.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>
    
  3. (необязательно) создайте значок приложения, как в шагах 4 и 5 принято отвечать.

вуаля, spyder стал вдруг гораздо более Mac-дружественным!

редактировать:
можно дополнительно улучшить mac-дружелюбие spyder by:

  1. предотвращение появления общего значка ракеты python помимо значка spyder
    Для этого снимите флажок в spyder опции Tools - > Preferences - > IPython console - > Graphics - > Activate (matplotlib)

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

    #!/bin/bash
    /usr/local/bin/spyder $@
    

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

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

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

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


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


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

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

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


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