2012-07-09 12 views
5

Me gustaría ejecutar un script work.py en Python, después de ejecutar un script de inicialización init.py.Script de inicio de Python

Si estuviera buscando una sesión interactiva, ejecutando python -i init.py o estableciendo PYTHONSTARTUP=/path/to/init.py haría el truco, pero estoy buscando ejecutar otro script.

Dado que este es un caso genérico que se da a menudo (entorno init.py conjuntos y también lo es la misma todo el tiempo), yo prefiero no hacer referencia altamente init.py de work.py. ¿Como se puede hacer esto? ¿Cambiaría algo si lo necesitaba de un script en lugar de hacerlo desde el prompt?

Muchas gracias.

+0

¿Cómo '' work' depende de 'init'? Podrías hacer 'python -c 'import init; importar trabajo''? - o quizás menos elegante, 'python -c 'execfile (" init.py "); execfile ("work.py") '' – mgilson

+0

' work' necesita 'init' para ejecutarse antes. Lo que está sugiriendo puede funcionar (lo intentaré ahora) pero no es ideal, necesito algo como esto cada vez que ejecuto un script de Python. Podría alias o crear un comando de shell para hacer referencia a él de la manera habitual, p. 'py work.py' donde' py() 'sería un comando de shell definido, pero eso causará otros problemas. Prefiero una forma limpia de ejecutar siempre la misma secuencia de comandos init si hay una ... – gt6989b

+0

Entonces, (solo para ser claro), quiere definir globalmente una secuencia de comandos ('init.py') que se llamará antes de nada al iniciar Python como si estuvieras haciendo algo como 'cat init.py main.py | python' completamente independiente de qué archivo 'main.py' en realidad es? – mgilson

Respuesta

5

De manera más general que en la respuesta aceptada de C0deH4cker, esto se trata en el manual de Python en Section 2.2.5 - Cusomization Modules. La idea básica es, para obtener la ubicación del script de inicio especial, uno debe ejecutar el siguiente código de Python, p. de la sesión interactiva del intérprete:

>>> import site 
>>> site.getusersitepackages() 
'/home/user/.local/lib/python3.2/site-packages' 

La salida debe ser exactamente tal ubicación, en el archivo sitecustomize.py.

+0

Esta debería ser la respuesta aceptada, ya que es más portátil. –

4

Python tiene un script especial que se ejecuta al inicio. En mi plataforma se encuentra en /usr/lib/python2.5/site-packages/sitecustomize.py IIRC. Por lo tanto, puede poner init.py en ese directorio junto con un script de sitecustomize.py que lo importe, o simplemente pegar el contenido de init.py en el sitiocustomize.py.

+0

no pudo hacerlo funcionar - ponga 'init.py' en'/ruta/a/python/site-packages/site-customize.py' (el directorio existe, el archivo no) y no ve cambios en el estado anterior. – gt6989b

+1

Vaya, es sitecustomize.py (sin guión). Editando respuesta – C0deH4cker

+0

gracias, eso funcionó como magia. Aunque me gustaría que pudieras hacer esto sin hackear. Por ahora, a menos que aparezca algo cualitativamente mejor, con mucho gusto aceptaré su respuesta. Gracias por ayudarme. – gt6989b

Cuestiones relacionadas