简体   繁体   中英

Python program will run in Spyder terminal, but not in a regular linux terminal

(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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM