python - significa - No se puede ejecutar el archivo.py de putty, error de sintaxis: palabra inesperada(esperando ")")
syntaxerror invalid syntax python (2)
Respuesta corta: Ejecute estos como python filename.py
, o agregue la línea #!/usr/bin/python
a la parte superior de sus scripts de Python.
Respuesta larga: cuando ejecuta un archivo desde la línea de comando en Linux (que es lo que ejecuta la Raspberry Pi), de manera predeterminada asume que el archivo es un archivo de script de shell (generalmente script Bash). Por lo tanto, utiliza el shell Bash (o algún otro shell, pero generalmente es Bash) para interpretar el archivo, y Bash no conoce la sintaxis de Python. Si desea ejecutar su archivo utilizando un intérprete diferente (Python, en este caso), debe agregar una "línea mágica" en la parte superior del archivo que comienza con #!
(generalmente pronunciado "hash-bang", y algunas veces pronunciado "shebang" para abreviar). Siguiendo el #!
caracteres es la ruta completa del intérprete a utilizar, por ejemplo /usr/bin/python
para scripts de Python. (También puede usar /usr/bin/env python
como otra sugerencia sugerida, prefiero /usr/bin/python
porque es imposible obtener el intérprete de Python equivocado de esa manera. Pero eso está entrando en temas avanzados que pueden ser más de lo que necesita ahora mismo.)
Así que cuando pones la línea #!/usr/bin/python
en la parte superior de tus scripts de Python, le estás diciendo al sistema Linux con qué intérprete ejecutar el programa, y luego debería All Just Work ™.
Además, ¡ DETENGASE usando sudo para editar y ejecutar estos! Eso es solo pedir problemas.
Soy nuevo en Python y Linux y, como tal, solicito explicaciones simples con un conocimiento mínimo asumido cuando sea posible, por favor, sin embargo, estoy más que dispuesto a invertir tiempo y esfuerzo para aprender.
Tengo una Raspberry Pi 2 (Modelo B V1.1) que ejecuta Linux. Yo interactúo con este pi vía masilla.
Intento crear un juego de reflejos competitivo simple, que consta de 2 botones y un solo LED. Mi objetivo es que el LED se ilumine después de un breve intervalo, y el primer jugador en presionar su botón gana.
Estoy escribiendo el guión para esto con python (específicamente 2.7.3)
Mi problema es que no puedo ejecutar CUALQUIER archivo .py desde masilla, siempre recibo el mismo error:
Syntax error: word unexpected (expecting ")")
Para determinar si el problema era un error en mi código, creé un archivo .py muy simple para verificar si se produce el mismo error, y así fue. Así que actualmente creo que incluso si mi código era funcional, algo me impide ejecutar CUALQUIER archivo .py.
El proceso que estoy usando es el siguiente:
Primero creo un nuevo archivo python desde dentro de masilla:
sudo nano test.py
Luego, ingreso mi código python (muy simple por ahora, ya que no puedo ejecutar CUALQUIER archivo .py)
for each in range(5):
print ''hello''
Luego presiono CTRL + O para escribir el archivo, presiono enter, luego CTRL + X para salir
Finalmente, hago el archivo ejecutable usando
sudo chmod u+x test.py
y tratar de ejecutarlo
sudo ./test.py
nuevamente, ocurre un error similar
Syntax error: "(" unexpected
Luego decidí ingresar el código directamente en el shell de Python, usando
sudo python
>>>for each in range(5):
... print ''hello''
Esta vez, la salida es el resultado deseado:
hello
hello
hello
hello
hello
Así que no hay problema en ejecutar código python directamente desde el shell, simplemente no puedo ejecutar ningún archivo .py previamente guardado
Cualquier idea sobre lo que podría estar causando esto es muy apreciada, y me disculpo si no he proporcionado suficiente información para que sea útil para usted.
¡Gracias por adelantado!
Si desea ejecutar así, necesita la siguiente línea como primera línea
#!/usr/bin/env python
Esto le dirá a bash (o equivalente) que ejecute el archivo con el intérprete de Python.
Si no quieres hacer eso, entonces puedes ejecutar el script de esta manera:
$ python test.py
Si sigue esta ruta, no necesita otorgar permisos de ejecución en el script en sí.
Además, las secuencias de comandos no se deben ejecutar con sudo a menos que sea absolutamente necesario.