Не могу запустить программу на Python в терминале

(Я использую Ubuntu 12.04)

Я сделал эту программу на Python:

#!/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)

И я хочу иметь возможность запускать ее в терминале. Я использую редактор python: Spyder У этого есть опция «Запустить в системном терминале». Всякий раз, когда я делаю это, моя программа работает отлично. Я могу ввести несколько команд, и они все будут запущены. Когда я устанавливаю файл на exicutible и запускаю /home/matthew/.runallcommands.py --python или /home/matthew/.runallcommands.py, сначала превращаю курсор в «t», который затем, когда я щелкаю где-то, снимает эту область экрана и сохраняет ее как фотографию. с именем «ОС» в моей домашней папке. затем я получаю это сообщение об ошибке:

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")

Я не уверен, имеет ли это какое-то отношение к тому, как я назвал файл, потому что моя программа работала на 100% в терминале в spyder.

-1
задан 13 November 2013 в 18:13

1 ответ

Ваши команды Python интерпретируются как команды оболочки, например print "Multiple Command Runner" ищет файл с таким именем для печати (со связанным типом MIME).

Насколько я знаю, добавление параметра командной строки --python в сценарий оболочки не приводит к его интерпретации как сценария python - для этого необходимо изменить #!/bin/sh 'shebang' на соответствующий питон шебанг например

#!/usr/bin/env python
# -*- coding: utf-8 -*-

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

#@author: matthew

import os
.
.
.

После этого вы сможете запустить его, сделав исполняемый файл

chmod +x /path/to/yourfile.py

и выполнить его как

/path/to/yourfile.py

Если yourfile.py находится в текущий каталог, вы можете использовать относительный путь ./yourfile.py для его выполнения.

0
ответ дан 13 November 2013 в 18:13

Другие вопросы по тегам:

Похожие вопросы: