2010-08-03 15 views
7

Pregunta: En la línea de comandos, ¿cómo puedo llamar un script de python sin tener que escribir python delante del nombre del script? ¿Esto es posible?Llamar a un script de python desde la línea de comandos sin escribir "python" primero


Info:

me escribió un script muy útil para acceder a bases de datos SQLite desde la línea de comandos, pero que tipo de no me gusta tener que escribir "args pitón SQLsap" y prefiere sólo tiene que escribir "args SQLsap ". No sé si esto es posible, pero sería bueno saber si lo es. Para algo más que solo este programa.

+0

¿Qué sistema operativo utiliza? –

+0

Bueno. para esto, básicamente, solo estoy usando Unix. sería bueno lograr lo mismo en Windows, pero también sería bueno tener la paz mundial. Michael Dillon dio la mejor respuesta posible para que funcione en Windows. La respuesta de Efritz funcionó bien. También lo puse en/usr/bin, así que ahora puedo usarlo desde cualquier lugar simplemente escribiendo SQLsap. Más bien agradable. – Narcolapser

Respuesta

25

puede anteponer un tinglado en la primera línea del script:

#!/usr/bin/env python 

Esto le dirá a su shell actual el comando a alimentar a la secuencia de comandos en.

+14

Además, recuerde marcar su archivo como ejecutable. ('chmod + x SQLsap' en POSIX OS.) –

+0

ah, entonces eso es lo que hace. Lo he visto antes pero nunca lo sé. ¡Gracias! – Narcolapser

+1

Además, me gustaría señalar que/usr/bin/env es en sí mismo un programa. Se usa para determinar * dónde se encuentra un ejecutable específico. Si sabe dónde está su intérprete de Python (/ usr/bin/python, por ejemplo), simplemente puede sustituir el shebang para que diga: #!/usr/bin/python. Esto también se aplica a cualquier comando ejecutable: perl, python, bash, etc. – efritz

4

Quieres un shebang. #!/path/to/python. Ponlo en la primera línea de tu script python. El #! es en realidad un número mágico que le dice al sistema operativo que interprete el archivo como un script para el programa nombrado. Puede suministrar /usr/bin/python o, para ser más portátil, /usr/bin/env python que llama al programa /usr/bin/env y le indica que desea el intérprete de Python instalado en el sistema.

También tendrá que poner su secuencia de comandos en su camino, a menos que esté de acuerdo con escribir ./SQLsap args.

3

Asumiendo que esto es en un sistema UNIX, se puede añadir un "tinglado" en la parte superior del archivo de la siguiente manera:
#!/usr/bin/env python

Y a continuación, establecer el indicador ejecutable como esto:
chmod +x SQLsap

2

En Windows o DOS puede acercarse poniendo su código python en un archivo .BAT como este.

rem = ''' this line interpreted by BAT and PYTHON 
@REM BAT-ONLY code begins now inside PYTHON comment 
@echo off 
python "%~dpnx0" %* 
goto :eof 
@REM CMD-ONLY code ends 
''' 

import sys 
print sys.path 

Por desgracia, no puede deshacerse de la primera línea del mensaje en la salida, pero siempre se puede cambiar el texto que sigue a ''' a ser algo así como el nombre de la aplicación y la gente no se diera cuenta.

Idealmente, no colocaría muchos códigos Python en el archivo .BAT pero importaría un archivo .py y luego ejecutaría su método .__main__.

+0

Buen truco, pero creo que la solución * oficial * es asociar extensiones de scripts de Python con el intérprete de Python. –

0

En UNIX, se utiliza una línea de tinglado en el inicio de la secuencia de comandos:

#!/usr/bin/env python 

hacer que el archivo ejecutable:

chmod +x arbitraryname 

y la puso en un directorio en el PATH (puede ser un enlace simbólico):

cd ~/bin/ 
ln -s ~/some/path/to/myscript/arbitraryname 

En las ventanas, como archivos * .py se ha establecido para ser abierto con python.exe por defecto. (De lo contrario, puede configurarlo manualmente.) De modo que puede ejecutar archivos * .py en la consola directamente.

Tenga en cuenta que:

En las ventanas, código de texto nueva línea es "\ r \ n", pero en UNIX, es "\ n". Si su script de python es el formato de Windows, entonces la ejecución en Unix informará el error "No such archivo o directorio". Para reparar este problema, simplemente reemplace todo "\ r \ n" con "\ n" en Unix estará bien.

1

Otra forma de hacerlo sería empaquetar el script de python.

Entonces todo lo que tendrías que hacer es ejecutar $ pip install package-name y simplemente ejecutar $ package-name desde cualquier directorio ejecutaría tu script de python.

Recomendaría este método, ya que le permite compartir/instalar/usar/eliminar rápidamente su secuencia de comandos python.

Escribí una secuencia de comandos simple QuickPackage que puede crear y cargar instantáneamente el paquete de Python para su impresionante script simplemente ingresando la ruta de su script de python.

Ejemplo:

$ pip install quickpackage 

Uso:

Uso Basta con ejecutar quickpackage e introduzca la ruta del archivo de comandos de Python.

Ejemplo:

❯ quickpackage              
Enter name: quickpackage 
Enter version: 1.1 
Enter description: Instantly create and upload python package for your script 
Enter github url: https://github.com/yask123/quick-package 
enter author: Yask Srivastava 
Enter email: [email protected] 
Path of python script file: run.py 
running register 
.... 
running upload 
Submitting dist/quickpackage-1.1.tar.gz to https://pypi.python.org/pypi 
Server response (200): OK 

Ahora basta con ejecutar la secuencia de comandos mediante la ejecución de $ quickpackage (en este caso)

Cuestiones relacionadas