2011-09-26 20 views
12

Duplicar posible:
Calling a python script from command line without typing “python” firstcómo hacer script en Python autoejecutable

He intentado

bash$ chmod +x script.py 

no funciona. También recuerdo poner

#!usr/bin/env python 

al principio del guión.

bash$ ./script.py 

no hace nada, sólo cambia mi cursor en una cruz lol

ACTUALIZACIÓN: He arreglado

#!/usr/bin/python  

También he intentado

chmod a+x script.py 

aún nada. Mi script tiene comandos de importación y usa sys.argv ... He seguido las instrucciones en este link (mira al final de la página). Nada funciona

+1

¿Qué hace realmente tu script?¿Has probado esto con un hello.py? Usualmente uso #!/Usr/bin/python y chmod 755 hello.py. –

+1

bash $ chmod ** a + x ** script.py. Tengo que decir *** quién *** consigue ejecutar el guión. –

+2

Solo para tu información: el motivo por el que el cursor se está convirtiendo en una cruz es que tu script se interpreta como un script de shell ya que has estropeado el shebang (mira la respuesta de @ TokenMacGuy). Eso significa que su declaración de "importación" ejecuta el comando 'import', que toma una captura de pantalla. Es posible que ahora tenga un archivo PNG llamado 'sys',' os' o algo similar ... –

Respuesta

16

Aquí está la lista de cosas para tratar, en orden aproximado de probabilidad:

  • Asegúrese de que la línea del shebang tenga la sintaxis correcta (ya lo ha hecho, #!/usr/bin/python).
  • Asegúrese de que el shebang es la primera línea en el archivo (ni siquiera una línea en blanco o un comentario encima).
  • Verifique que /usr/bin/python realmente existe y funciona. Su intérprete de Python puede instalarse en otro lugar. Escriba /usr/bin/python en un aviso y asegúrese de que Python se inicie. Escriba which python si no sabe dónde está instalado.
  • Si . no está en su PATH (puede que no lo esté), debe ejecutar su secuencia de comandos con ./script.py porque el shell no busca comandos en el directorio actual de manera predeterminada.
  • Asegúrese de que el bit ejecutable esté configurado en su secuencia de comandos (+x, verifique con ls -l).
  • Asegúrese de estar utilizando terminaciones de línea solo LF en su editor. Las conchas pueden ser exigentes, y su línea de shebang debe terminar solo con LF y no con CRLF. Es probable que esto sea un problema si está usando un editor de texto de Windows, pero podría valer la pena verificarlo.
  • Asegúrese de que su editor de texto no inserte silenciosamente una BOM UTF-8 al comienzo del archivo. De nuevo, esto solo es probable si está usando el Bloc de notas en Windows.
+1

Los 2 últimos puntos salvan mi vida. – BPm

10

el "shebang" necesita contener la ruta completa al ejecutable. Estás llamando env, lo cual es bueno, pero no ha dado la ruta completa: iniciar la secuencia de comandos, así:

#!/usr/bin/env python 
#^
+0

Pegúenme a eso. Te maldigo, TokenMacGuy ... golpe. – krs1

Cuestiones relacionadas