Pregunta

(I am using ubuntu 12.04)

I made this python program:

#!/bin/sh
# -*- coding: utf-8 -*-

#Created on Tue Nov 12 19:44:50 2013

#@author: matthew

import os

print "Multiple Command Runner"
print "<Made by Matthew Cherrey>"
print "-------------------------"
numbcommand = 0
allcoms = []
while 1:
    numbcommand = numbcommand + 1
    command = raw_input(" Command: ")
    allcoms.append(command)
    decide = raw_input("Press [Enter] to and another command, press [r] to run all commands: ")
    if decide == "r":
        break

commands = ""
first = True
for item in allcoms:
    if first:
        commands = item
    else:
        commands = commands + " && " + item
os.system(commands)

And I want to be able to run it in the terminal. I use the python editor: Spyder This has an option to "Run in system terminal". Whenever I do this, my program works perfectly. I can enter multiple commands, and have them all run. When I set the file to an exicutible and run /home/matthew/.runallcommands.py --python or /home/matthew/.runallcommands.py, first makes my cursor into a "t" which then when I click somewere, is take a picture of that area of the screen and saves it as a photo named "OS" in my home folder. then I get this error message:

matthew@matthew-MS-7721:~$ /home/matthew/.runallcommands.py --python
Warning: unknown mime-type for "Multiple Command Runner" -- using "application/octet-stream"
Error: no such file "Multiple Command Runner"
Warning: unknown mime-type for "<Made by Matthew Cherrey>" -- using "application/octet-stream"
Error: no such file "<Made by Matthew Cherrey>"
/home/matthew/.runallcommands.py: 13: /home/matthew/.runallcommands.py: numbcommand: not found
/home/matthew/.runallcommands.py: 14: /home/matthew/.runallcommands.py: allcoms: not found
/home/matthew/.runallcommands.py: 17: /home/matthew/.runallcommands.py: Syntax error: "(" unexpected (expecting "do")

I am not sure if it has something to do with how I called the file, because my program worked 100% fine in the terminal in spyder.

¿Fue útil?

Solución

The first line instructs the system to run this with the Bourne shell, not with the Python interpreter.

Change

#!/bin/sh

to something like

#!/usr/bin/env python

When you run it from your Python IDE, the IDE knows it is a Python script, so it explicitly invokes the Python interpreter, bypassing the instruction on the first line.

See also Shebang on Wikipedia

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top