web-dev-qa-db-fra.com

Façons d'invoquer Python et Spyder sur OSX

J'ai récemment acheté un MacBook et y ai installé Python via Anaconda. Voici les informations de version:

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

J'aimerais pouvoir faire tout ce qui suit:

  1. Lancez Spyder sans passer par l'application Launcher (en tapant des éléments dans Spotlight et Quicksilver)
  2. Exécutez le code Python à partir du Finder, probablement en double-cliquant sur mon fichier .py ou en sélectionnant et en appuyant sur Cmd-O
  3. Exécutez le code Python en tapant le nom d'un script Python dans Quicksilver (comme s'il s'agissait d'un programme standard)

Voici ce que j'ai essayé:

  1. (rien; pas d'idées ici)
  2. J'ai associé les fichiers .py à /Users/kuzzooroo/anaconda/python.app/Contents/MacOS/python et les ai rendus exécutables (chmod u + x). Lorsque j'essaie de lancer l'application, elle ne se lance jamais et je ne reçois pas de message d'erreur (je ne sais pas où chercher)
  3. Rendre les fichiers exécutables et essayer de les exécuter à partir de Spotlight. Même résultat que # 2.

Voici ce que je peux fais:

  • Exécuter mon code à partir d'une fenêtre de terminal, si j'ai le droit Shebang sur le dessus et que le fichier est exécutable
  • Générez une application à l'aide de py2app. Malheureusement, cette méthode présente les inconvénients suivants:
    • Je modifie fréquemment mes scripts et préfère ne pas avoir à exécuter py2app à chaque fois que je le fais
    • Même pour un script trivial, l'application résultante est de 7 Mo
    • Pour exécuter l'application dans certains contextes, je dois chercher dans le paquet pour trouver le "fichier exécutable Unix" et l'exécuter à la place.

Une fois que cela fonctionne, je suis intéressé par les tâches suivantes:
UNE. Contrôle des scripts qui créent une fenêtre de console lorsqu'ils s'exécutent et de ceux qui ne le sont pas
B. Contrôler si la fenêtre de la console résultante disparaît à la fin du script ou attend que l'utilisateur (moi) la ferme
Cependant, je suppose qu’il sera peut-être facile de comprendre comment faire cela (ou si cela est possible) une fois que j’ai compris comment je vais appeler mes scripts au départ.

21
kuzzooroo

Pour que spyder puisse être appelé à partir de Spotlight ou du Finder:

  1. Recherchez l'emplacement de votre exécutable spyder en exécutant dans Terminal:

    which spyder
    

    Cela devrait donner ~/anaconda/bin/spyder si vous avez installé spyder via Anaconda, /opt/local/bin/spyder si vous avez utilisé MacPorts ou quelque chose de similaire.

  2. Créez un fichier appelé spyder dans votre répertoire Applications et rendez-le exécutable. Ensuite, remplissez-le avec le résultat de la commande précédente, suivi d'un &; exit:

    touch /Applications/spyder
    chmod +x /Applications/spyder
    echo -e '#!/bin/bash'"\n~/anaconda/bin/spyder &\nexit" >> /Applications/spyder
    
  3. Sous Terminal -> Préférences -> Profils -> "profil par défaut" -> Shell -> à la sortie du shell: sélectionnez "Fermer si le shell est sorti proprement"

Optionnel:

  1. Téléchargez l'icône de spyder de ici et ouvrez-la dans Preview. Copiez son contenu en appuyant sur cmd + c.

  2. Dans le Finder, localisez /Applications/spyder et ouvrez son volet "Lire les informations" en appuyant sur cmd + i. Sélectionnez l'icône dans le coin supérieur gauche avec votre souris et appuyez sur cmd + v.

60
Thomas

La réponse acceptée présente deux inconvénients: une fenêtre de la console apparaît lors du démarrage de spyder et on ne peut pas conserver une icône de spyder dans le dock. Ces drawbakcs peuvent être évités en créant un paquet d’applications Mac approprié pour spyder, ce qui est étonnamment facile à faire.

Pour convertir /usr/local/bin/spyder3 (le résultat de which spyder3 sur ma machine) en une application Mac traditionnelle:

  1. Créez un ensemble d’applications Mac (essentiellement une structure de dossiers contenant un fichier exécutable):

    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. Créez un fichier texte brut appelé Info.plist dans le dossier Contenu (par exemple, à l'adresse spyder.app/Contents/Info.plist) avec le contenu suivant:

    <?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. (Facultatif) Créez une icône d'application comme pour les étapes 4 et 5 de la réponse acceptée.

Voilà, spyder est devenu soudainement beaucoup plus convivial pour Mac!

MODIFIER
On peut encore améliorer la convivialité de spyder en:

  1. Empêcher que l'icône générique de roquette Python apparaisse à côté de l'icône de spyder
    Pour cela, décochez Spyder dans l’option Outils -> Préférences -> Console iPython -> Graphiques -> Activer (matplotlib)

  2. Faire de spyder l'éditeur par défaut des fichiers .py.
    Celui-ci est plus délicat. D'abord, assurez-vous que le contenu de spyder.app/Contents/MacOS/spyder est lu

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

Créez ensuite un script d'automate contenant une seule action "Exécuter un script Shell". Collez-y le script (bash) suivant:

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

Choisissez "En tant qu'argument" pour les données d'entrée, comme indiqué dans la capture d'écran ci-dessous ("--args ~" manque dans la capture d'écran, mais il est nécessaire pour éviter une erreur lors du lancement de spyder sans fichier) .  automator script
Enregistrez ce script en tant qu’application appelée "SpyderOpener" par exemple.

Définissez SpyderOpener comme application par défaut pour l’ouverture des fichiers .py (à l’aide de la boîte de dialogue "Lire les informations" du Finder dans un fichier .py)

22
topoman

Accédez à anaconda/bin, localisez spyder (ou IPython, etc.), puis faites-le glisser vers le dock, mais placez-le dans la section Documents à la fin. Ensuite, vous aurez un accès facile à celui-ci. En cliquant dessus, Mac OS X lancera un shell qui l’exécutera. Il apparaîtra dans la section des applications. Vous pourrez ainsi faire avancer l’application en cours en cliquant dessus.

4
user3689227

Vous pouvez utiliser Automator pour créer une application qui exécutera le script Unix. Ouvrez Automator quand il demande le type de document "Application"

Recherchez et cliquez sur "Run Shell Script". Vous pouvez laisser/bin/bash tel quel et taper dans la case l'emplacement de spyder (comme indiqué en tapant quel spyder dans le terminal). Ensuite, vous enregistrez le fichier et vous avez terminé. Cela supprime également le problème que j'ai rencontré lorsque le terminal s'exécute en arrière-plan et vous fournit une application que vous pouvez faire glisser vers le dock. Vous pouvez également changer le logo comme suggéré ci-dessus.

(Je l'ai fait avec Mac OS 10.10 et un Anaconda 2.3.0)

3
jncweb

Vous pouvez ouvrir spyder en pointant Quicksilver sur ~/anaconda/bin/spyder (vous pouvez l'ajouter à votre catalogue pour qu'il le trouve toujours). 

2
asmeurer

Une méthode très simple ne nécessitant pas l’utilisation de Terminal consiste essentiellement à créer un package spyder.app dans Applications et à copier le fichier spyder exec d’Anaconda dans ce dossier. En cliquant sur le paquet, spyder se lancera en tant qu'application et vous pourrez cliquer avec le bouton droit de la souris sur l'icône du dock pour le conserver dans le dock.

Vous trouverez ci-dessous les instructions pas à pas.

Nous créons d’abord le dossier spyder.app dans Applications: 

  1. Ouvrez le dossier Applications dans le Finder.

  2. Faites un clic droit et créez "Nouveau dossier".

  3. Nommez le dossier "spyder.app" et autorisez l'extension .app.

Nous copions ensuite le fichier exec spyder:

  1. Dans une nouvelle fenêtre du Finder, ouvrez votre dossier de départ (il devrait avoir une image simple d’une maison sous forme d’icône). Un raccourci consiste à appuyer sur les touches Maj + Commande + H lorsque le Finder est ouvert.

  2. Ouvrez le dossier anaconda3, puis ouvrez le dossier nommé 'bin'.

  3. Localisez le fichier exec nommé 'spyder' et cliquez avec le bouton droit de la souris pour copier le fichier.

Remarque: si anaconda3 n'est pas installé dans votre répertoire personnel, recherchez simplement 'anaconda3' avec les correspondances exactes du nom de fichier dans le Finder et ouvrez le fichier.

Collez le fichier exec copié dans le package spyder.app:

  1. Dans la fenêtre du Finder ouverte aux applications, cliquez avec le bouton droit de la souris sur le spyder.app créé ci-dessus et sélectionnez "Afficher le contenu du paquet".

  2. Cliquez avec le bouton droit dans la fenêtre et collez le fichier exec.

Maintenant, lorsque vous revenez dans le dossier Applications, double-cliquez sur le package spyder.app et spyder devrait s'exécuter. Cliquez avec le bouton droit sur l'icône dans le dock et sélectionnez "Conserver dans le dock" pour conserver l'application dans le dock lorsque vous ne l'utilisez pas. Vous pouvez également créer l'icône de l'application comme indiqué aux points 4 et 5 de la réponse d'origine.

0
cookiecook