programa - Formas de invocar python y spyder en OSX
ejecutar un script en python 3 (5)
Recientemente compré una MacBook e instalé Python en ella a través de Anaconda. Aquí está la información de la versión:
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
Me gustaría poder hacer todo lo siguiente:
- Inicie Spyder sin tener que pasar por la aplicación Launcher (por ejemplo, escribiendo cosas en Spotlight y Quicksilver)
- Ejecute el código Python desde el Finder, presumiblemente haciendo doble clic en mi archivo .py o seleccionando y presionando Cmd-O
- Ejecute el código Python escribiendo el nombre de una secuencia de comandos Python en Quicksilver (como si fuera un programa normal)
Esto es lo que he intentado:
- (nada; no hay ideas aquí)
- He asociado los archivos .py con /Users/kuzzooroo/anaconda/python.app/Contents/MacOS/python y los he hecho ejecutables (chmod u + x). Cuando intento ejecutar la aplicación nunca se inicia y no aparece un mensaje de error (no sé dónde buscar)
- Hizo los archivos ejecutables y trató de ejecutarlos desde Spotlight. Mismo resultado que el # 2.
Esto es lo que puedo hacer:
- Ejecutar mi código desde una ventana de Terminal, si tengo el shebang correcto arriba y he hecho el archivo ejecutable
- Genera una aplicación usando py2app. Desafortunadamente, este método tiene los siguientes inconvenientes:
- Con frecuencia modifico mis scripts y preferiría no tener que ejecutar py2app cada vez que lo hago.
- Incluso para un script trivial la aplicación resultante es de 7 MB
- Para ejecutar la aplicación en algunos contextos, tengo que buscar en el paquete para encontrar el "archivo ejecutable de Unix" y ejecutarlo.
Una vez que tenga este trabajo, estoy interesado en hacer lo siguiente:
A. Controlar qué scripts crean una ventana de consola cuando se ejecutan y cuáles no
B. Controlar si la ventana de la consola resultante desaparece cuando la secuencia de comandos se completa o espera a que el usuario (yo) la cierre
Sin embargo, sospecho que puede ser fácil averiguar cómo hacer esto (o si es posible) una vez que haya descubierto cómo invocaré mis scripts en primer lugar.
La respuesta aceptada tiene dos inconvenientes: aparece una ventana de consola cuando se inicia spyder y uno no puede mantener un icono de spyder en la base. Estos drawbakcs se pueden evitar mediante la creación de un paquete de aplicaciones Mac adecuado para spyder, que es sorprendentemente fácil de hacer.
Para convertir /usr/local/bin/spyder3
(el resultado de which spyder3
en mi máquina) en una aplicación Mac tradicional:
Cree un paquete de aplicaciones Mac (básicamente una estructura de carpetas que contenga un archivo ejecutable):
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
Cree un archivo de texto sin formato llamado Info.plist en la carpeta Contenido (es decir, en spyder.app/Contents/Info.plist) con el siguiente contenido:
<?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>
(Opcional) Cree un icono de aplicación como en los pasos 4 y 5 de la respuesta aceptada.
¡Voilà, spyder se ha vuelto repentinamente mucho más compatible con Mac!
EDITAR :
Uno puede mejorar aún más la compatibilidad con macros de spyder mediante:
Impedir que aparezca el icono genérico del cohete python junto al icono del spyder
Para esto, desmarque en spyder la opción Herramientas -> Preferencias -> Consola iPython -> Gráficos -> Activar (matplotlib)Haciendo spyder el editor por defecto para archivos .py.
Este es más complicado. Primero asegúrese de que el contenido de spyder.app/Contents/MacOS/spyder lea#!/bin/bash /usr/local/bin/spyder $@
Cree luego un script automator que contenga una sola acción "Ejecutar un script de shell". Pegue el siguiente script (bash) en él:
for f in "$@"
do
open /Applications/spyder.app --args $f
done
if [ -z "$f" ]; then
open /Applications/spyder.app --args ~
fi
Elija "Como argumento" para los datos de entrada, como se muestra en la captura de pantalla a continuación (falta "--args ~" en la captura de pantalla, pero es necesario para evitar un error al iniciar el spyder sin ningún archivo).
Guarde este script como una aplicación llamada "SpyderOpener", por ejemplo.
Haga de SpyderOpener la aplicación predeterminada para abrir archivos .py (usando el cuadro de diálogo "Obtener información" del Finder en un archivo .py)
Navegue a anaconda / bin, localice el spyder (o IPython, etc.) y arrástrelo al dock, pero póngalo en la sección de documentos al final. Luego, podrá acceder a él fácilmente y, al hacer clic en él, Mac OS X iniciará un shell que lo ejecuta, y aparecerá en la sección de aplicaciones, de modo que pueda hacer avanzar la aplicación ejecutando haciendo clic en ella.
Para hacer que spyder se pueda llamar desde Spotlight o Finder:
Localice dónde se encuentra el ejecutable de spyder ejecutando en la Terminal:
which spyder
Esto debería producir
~/anaconda/bin/spyder
si instaló spyder a través de Anaconda,/opt/local/bin/spyder
si utilizó MacPorts o algo similar.Cree un archivo llamado
spyder
en su directorio deApplications
y hágalo ejecutable. Luego, rellénelo con la salida del comando anterior, seguido de un&; exit
&; exit
:touch /Applications/spyder chmod +x /Applications/spyder echo -e ''#!/bin/bash''"/n~/anaconda/bin/spyder &/nexit" >> /Applications/spyder
En Terminal -> Preferencias -> Perfiles -> "perfil predeterminado" -> Shell -> Cuando el shell se cierra: seleccione "Cerrar si el shell salió de forma limpia"
Opcional:
Descargue el icono del spyder desde here y ábralo en Vista previa. Copia su contenido pulsando cmd + C.
En el Finder, localice
/Applications/spyder
y abra su panel "Obtener información" presionando cmd + I. Seleccione el icono en la esquina superior izquierda con el mouse y presione cmd + V.
Puede abrir el spyder apuntando Quicksilver a ~/anaconda/bin/spyder
(puede agregarlo a su catálogo para que siempre lo encuentre).
Puede usar Automator para crear una aplicación que ejecute Unix Script. Abra Automator cuando le solicite el tipo de documento put "Application"
Busque y haga clic en "Ejecutar shell script". Puede dejar / bin / bash como está y escribir en el cuadro la ubicación del spyder (como se indica al escribir qué spyder en la terminal). Luego guardas el archivo y listo. Esto también elimina el problema que tuve cuando la terminal se ejecuta en segundo plano y te da una aplicación que puedes arrastrar al dock. También puede cambiar el logotipo como se sugiere anteriormente.
(Hice esto con Mac OS 10.10 y una Anaconda 2.3.0)