Как запустить .py из .sh? (Двойным щелчком)

Описание проблемы:

У меня OS: линукс Mint/Open Suse Leap 16. + Idle3 среда для разработки python3 + мой код питон с библиотекой pygame.

Задача запустить .py из .sh двойным щелчком по файлу в одно действие ).


Ответы (2 шт):

Автор решения: Arthur Alunts

A) Зайдите в Настройки/Приложения/Настройте ассоциацию файлов для sh (я её случайно сбил её... ): Для sh-файла: Выбирайте: /usr/bin/bash.

B) Чтобы, запустить 0.py из 0.sh:

  1. Создаем в 0.py:

    print("Hello World")
    
  2. Создаем текстовый файл 0.sh:

    #!/usr/bin/bash
    echo 1111  
    python3 0.py 
    
  3. Переходим в папку проекта с 0.py и 0.sh файлами. открываем консоль:

    $ chmod +x 'Перетаскиваем файл и заключаем его в такие кавычки'
    нажимаем (enter)
    /.'Перетаскиваем файл и заключаем его в такие кавычки'
    нажимаем (enter)
    

(Важно: Попутно смотрим: не выдает ли ошибки, чтобы не было лишних пробелов и символов в конце строк,- если они есть, - удаляем backspace'ом.)


После этого все работает!
→ Ссылка
Автор решения: Serge3leo

По-хорошему, файл .sh должен выглядеть, например, так:

#!
PYTHON=${PYTHON:-python}  # Возьмём путь к python из переменной окружения, если она задана
script=`dirname -- "$0"`/`basename -- "$0" .sh`.py  # Получим имя python скрипта
"$PYTHON" "$script" "$@"  # Запустим python скрипт с аргументами, если они есть

Следует установить этому файлу разрешение на выполнение, например, командой:

chmod +x <Путь>.sh

Как можно заметить, содержимое файла не зависит от базового имени .py файла, поэтому их можно получать командой ln -s ... на единый файл образец.

Однако, замечу, что есть же вариант запуска сразу .py файла. Для этого он должен начинаться со следующей строки (см. так же В чём смысл и преимущества #!/usr/bin/env?):

#!/usr/bin/env python
....

Точно так же ему следует установить разрешение на выполнение:

chmod +x <Путь>.py

Как вариант, расширение, .py не обязательно, это вопрос личных предпочтений.

→ Ссылка