Авто исполняемый файл Python без открытия из терминала? - PullRequest
3 голосов
/ 13 сентября 2009

Извините, если это не тот сайт (может быть, суперпользователь), но я пытаюсь сделать мой файл python.py исполняемым, чтобы я мог щелкнуть по нему, и он автоматически сделает свое дело, без указания его открытия в терминале. с помощью этого приглашения по умолчанию, и у меня уже есть «chmod + x» для его разрешений.

Пояснение:

  • Я хочу запустить его, щелкнув по нему, а не через терминал (я имел в виду, что когда я сказал «можете щелкнуть по нему, и он автоматически сделает свое дело»)
  • Уже есть линия Шебанга
  • Когда я щелкаю по нему прямо сейчас, он спрашивает меня, хотите ли вы открыть его в текстовом файле терминала - могу ли я сделать так, чтобы он всегда по умолчанию открывался в терминале, или это просто странный запрос?

Ответы [ 6 ]

4 голосов
/ 13 сентября 2009

В первой строке вашего файла Python добавьте:

#!/usr/bin/env python

Так что если у вас есть:

print "Hello World"

Затем вы должны иметь:

#!/usr/bin/env python
print "Hello World"
3 голосов
/ 14 сентября 2009

Сначала выберите желаемое расширение для файлов, для которых вы хотите иметь такое поведение. Пиу, наверное, хороший выбор.

Назовите ваш файл, и в вашем файловом браузере свяжите этот тип файла с python. В GNOME вы открываете его окно свойств, переходите на вкладку «Открыть с помощью» и вводите python в качестве пользовательской команды.

Теперь вот важная часть: тот маленький диалог, который вы получаете, спрашивает вас, что бы вы хотели сделать с файлом, потому что он помечен как исполняемый. Удалите исполняемый бит с помощью chmod -x. Теперь, когда вы дважды щелкните по нему, он просто откроется с соответствующей программой.

Конечно, если вы хотите запустить его из командной строки, вам теперь придется явно запускать его с python, поскольку он не помечен как исполняемый. Строка shebang больше не имеет значения, но я все равно оставлю ее на тот случай, если кто-то другой пометит ее как исполняемый и ожидает, что она будет работать.

1 голос
/ 07 октября 2011

http://supervisord.org - лучший выбор.

0 голосов
/ 13 октября 2018

У меня установлена ​​анаконда и

#!/usr/bin/env python

у меня не сработало, однако:

#!/home/geoff/miniconda3/bin/python

сработало. Итак, проверьте, какой Python ваш терминал обычно использует для выполнения ваших файлов .py с

which python

в терминале и используйте это как свой шебанг.

0 голосов
/ 13 сентября 2009

Как уже говорили другие, вам нужно поставить "шебанг" в начале файла, чтобы указать, какой интерпретатор использовать для выполнения файла.

Как упомянуто в приведенной выше ссылке, наиболее переносимым способом является использование команды env (вместо фиксированного пути к python) - укажите это в качестве первой строки в файле:

#!/usr/bin/env python

Оболочка будет искать в $PATH ваш python, вместо того, чтобы искать /usr/local/bin/python, а затем потерпеть неудачу. Это означает, что он будет работать, если Python установлен в нестандартном месте.

Например:

$ cat example.py
print "Test"
$ file example.py # it is treated as an ASCII file
example.py: ASCII text
$ chmod +x example.py
$ ./example.py # when executed, it defaults to being executed as a shell script
./example.py: line 1: print: command not found

Теперь, если я добавлю строку "Шебанг" ...

$ cat example.py
#!/usr/bin/env python
print "Test"
$ file example.py # it is recognised as a Python script
example.py: a python script text executable
$ ./example.py # and executes correctly
Test
0 голосов
/ 13 сентября 2009

Вы поместили это в начало файла:

#!/usr/bin/python

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...