Как запустить программу на Python напрямую?

Как запустить программу на Python напрямую?

Я создал файл .py (скажем, mnik.py ) в gedit. В терминале он работает без сбоев.

Команда идет

python3 mnik.py

Но всякий раз, когда я нажимаю на файл, он открывается с помощью gedit. Я не могу запустить его напрямую, нажав.

Что делать?

13
задан 24 April 2016 в 17:50

4 ответа

Существует две необходимые вещи.

  1. Сценарий должен иметь #! строка говоря ОС, который интерпретатор использовать. В Вашем случае Ваша самая первая строка в коде должна быть #!/usr/bin/env python3
  2. Необходимо открыть файловый менеджер, перейдите к Редактированию-> Предпочтения-> Поведение и выберите, что сделать с исполняемыми файлами

    enter image description here

    1. Наконец, удостоверьтесь, что Вашему файлу самому на самом деле установили исполняемые полномочия. В терминале можно сделать chmod +x /path/to/script.py и в GUI, щелкните правой кнопкой по файлу и измените его Свойства-> Полномочия

    enter image description here

    enter image description here

Отметьте о строке хижины

Самую первую строку называют строкой хижины и должна запуститься с #! ; независимо от того, что прибывает, затем название интерпретатора, который прочитает Ваш код. В случае, если Вы используете python3 Вы могли использовать также #!/usr/bin/python3 или #!/usr/bin/env python3 для мобильности. Если Вы не используете код, который будет характерен для версии Python - просто используют #!/usr/bin/env python

Примечание по сценарию произвело:

Если Ваш сценарий распечатает вывод к консоли, то это должно будет иметь окно терминала или альтернативно использовать диалоговые окна графического интерфейса пользователя такой как zenity. Предпочтите использовать Run in Terminal опция, если Вы хотите видеть код. Если Вы хотите, чтобы сценарий сделал что-то, не видя консольного вывода - использование Run опция.

enter image description here

Кроме того, если у Вас есть параметры командной строки, такой как sys.argv[1] в сценарии Вы не можете установить их, если у Вас нет открытого окна терминала.

26
ответ дан 25 April 2016 в 03:50
  • 1
    Да, но вопрос, он будет работать с играми андроида, такими как столкновение кланов? – Panther 15 September 2017 в 03:42

Если Вы хотите запустить эту программу, не вводя python3 mnik.py, необходимо сделать исполняемый файл сценария и удостовериться, что python3 используется для выполнения его.

первое можно сделать путем выполнения

 chmod +x mnik.py

второе, которое можно сделать путем добавления как первая строка сценария строка хижины , который вызывает python3. Во всех системах Ubuntu я работал с этим, шел с python3, можно получить python3 путем добавления этой строки наверху:

#!/usr/bin/env python3

После тех двух изменений можно ввести /path/to/mnik.py, ./mnik.py или всего mnik.py (последний требует, чтобы сценарий был в ПУТИ).

при внесении этих изменений, Вы могли бы также хотеть рассмотреть переименование mnik.py к mnik, который является обычной практикой с пакетами Python с командами, которые публикуются на PyPI.

2
ответ дан 25 April 2016 в 03:50
  • 1
    Anbox работает над новой версией человечности (18,04 тестовых версий), но это использует x86 архитектуру, и 99% apk не совместимы для x86 архитектуры. Так it' s пустая трата времени, если Вы хотите играть в игры. – Manoj Sahu 14 November 2018 в 01:22

Необходимо поместить местоположение программы для выполнения кода на первой строке, и затем необходимо установить сценарий для выполнения как исполняемый файл путем изменения его полномочий. Это предполагает запуск приложений от терминала или другого сценария.

Находят, что Ваша установка Python

$ which python
/usr/bin/python

Добавляет местоположение программ к верхней строке Вашей программы с #! в передней стороне

#!/usr/bin/python

# Python code goes here....

Набор сценарий Python для имения прав выполнения

$ chmod 700 test.py

Теперь, можно запустить скрипт непосредственно

$ ./test.py

Листинг кода для test.py

#!/usr/bin/python

print "test"
3
ответ дан 25 April 2016 в 03:50
  • 1
    Anbox не включает игру Google, и много сложных игр будут устанавливать, но не играть на многих из других эмуляторов, которые не включают игру Google. – Panther 15 September 2017 в 03:49

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

Перейдите в ~/.local/share/applications, создайте там новый файл .desktop. Назовите его как-то так python-run.desktop. Вставьте в него следующее:

[Desktop Entry]
Name=Run Python Script
Comment=Python Interpreter
Exec=gnome-terminal -- /bin/bash -c 'python3 %f;echo "$(tput setaf 1)Program terminated.\nPress enter to exit...$(tput sgr 0)"; read'
Icon=/usr/share/pixmaps/python3.6.xpm
Terminal=true
Type=Application
Categories=Development;
StartupNotify=true
NoDisplay=true

В основном это скопировано из файла .desktop самого интерпретатора Python. Разница в том, что когда вы открываете его, он запускает новый экземпляр строки терминала с командой: python3 %f;echo "$(tput setaf 1)Программа завершена.\nНажмите Enter, чтобы выйти...$(tput сгр 0)"; read', который запускает скрипт (%f — это, по-видимому, путь к файлу), затем приостанавливается при выходе.

Затем перейдите в nautilus, щелкните скрипт правой кнопкой мыши, выберите Свойства → Открыть с помощью и выберите Запустить скрипт Python, только что созданное «Приложение». Теперь, когда вы дважды щелкнете, он должен запустить скрипт из терминала.

Это неплохой обходной путь, но я обнаружил с ним 2 проблемы:

  1. Он не работает со скриптами, в названии которых есть пробел.
  2. Открывается отдельное окно терминала, что довольно раздражает. По какой-то причине я не мог заставить его работать, просто установив Exec=python3 %f, он продолжал выдавать мне исключение конца файла всякий раз, когда программа пыталась получить ввод. Не знаю, почему.
0
ответ дан 15 June 2020 в 08:07

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

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