Страница 1 из 1
Ярлык для *.pyw (python)
Добавлено: 03 янв 2018, 13:38
Kurum
Linux Mint XFCE 18.3
Хочу сделать ярлык для питоновского файла с расширением .*pyw (можно и .*py).
Нажимаю на "Создать значёк запуска".
Вписываю имя ярлыка.
Команда: 'python3 ~/Документы/Питон/Timer.pyw'
Рабочий каталог: '~/Документы/Питон'
Ставлю галочку "Запускать в терминале".
И ничего не работает, только мелькает окно терминала (открылось и сразу закрылось).
Ярлык для *.pyw (python)
Добавлено: 03 янв 2018, 14:08
Chocobo
Kurum писал(а): ↑03 янв 2018, 13:38
Команда: 'python3 ~/Документы/Питон/Timer.pyw'
Попробуй вызывать сам терминал с выполнением команды уже там.
Что-то вроде
xfce4-terminal -H -e python3 ~/Документы/Питон/Timer.pyw
Ярлык для *.pyw (python)
Добавлено: 03 янв 2018, 14:09
PantiL
Что происходит, если вы запускаете этот скрипт вручную в терминале? Похоже, что скрипт закончил свою работу и терминал закрылся.
Ярлык для *.pyw (python)
Добавлено: 03 янв 2018, 14:56
Kurum
Chocobo писал(а): ↑03 янв 2018, 14:08
Kurum писал(а): ↑03 янв 2018, 13:38
Команда: 'python3 ~/Документы/Питон/Timer.pyw'
Попробуй вызывать сам терминал с выполнением команды уже там.
Что-то вроде
xfce4-terminal -H -e python3 ~/Документы/Питон/Timer.pyw
Попробовал. Результат тот же.
PantiL писал(а): ↑03 янв 2018, 14:09
Что происходит, если вы запускаете этот скрипт вручную в терминале? Похоже, что скрипт закончил свою работу и терминал закрылся.
Если запускаю скрипт в терминале вручную, то он запускается.
Есть ещё странный момент. Это уже другой файл питона. Там есть строчка:
sss = open('res/dark.stylesheet', 'r')
Если я запускаю файл через IDLE, то всё работает, как задумано. А вот при запуске через терминал вылезает ошибка, что нет такого файла:
FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'res/dark.stylesheet'
Почему так происходит? Эта ошибка и в XFCE и в KDE.
Ярлык для *.pyw (python)
Добавлено: 03 янв 2018, 17:20
PantiL
Kurum писал(а): ↑03 янв 2018, 14:56
Почему так происходит? Эта ошибка и в XFCE и в KDE.
Ни XFCE, ни KDE тут ни при чем. Если питон сообщает, что такого файла нет - значит его и правда нет по пути res/dark.stylesheet относительно самого скрипта.
А ну ка скопируйте вывод этих команд:
Ярлык для *.pyw (python)
Добавлено: 03 янв 2018, 17:22
PantiL
Kurum писал(а): ↑03 янв 2018, 14:56
Если запускаю скрипт в терминале вручную, то он запускается.
Понятно, что он запускается, что он делает?
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 11:17
Kurum
PantiL писал(а): ↑03 янв 2018, 17:20
Ни XFCE, ни KDE тут ни при чем.
Я имел ввиду, что проблема есть на двух машинах с разными оболочками (здесь главное, что не на одном пк).
Код: Выделить всё
name@S ~ $ cd ~/Документы/Питон/
name@S ~/Документы/Питон $ ls
res Timer.pyw
name@S ~/Документы/Питон $ ls res/
dark.stylesheet
name@S ~/Документы/Питон $
Файл-то есть...
А вот полный отчёт об ошибке в терминале:
Код: Выделить всё
name@S ~ $ python3 ~/Документы/Питон/Timer.pyw
Traceback (most recent call last):
File "/home/name/Документы/Питон/Timer.pyw", line 82, in <module>
window = Window()
File "/home/name/Документы/Питон/Timer.pyw", line 37, in __init__
sss = open('res/dark.stylesheet', 'r')
FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'res/dark.stylesheet'
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 11:54
PantiL
Странно конечно. Но ладно, тогда подредактируй скрипт вот так:
В начало файла добавь если там такого нет
потом, в том месте где написаны строки открывающие файл :
Код: Выделить всё
path_to_script = os.path.dirname(os.path.abspath(__file__))
path_to_file = os.path.join(path_to_script, 'res/dark.stylesheet')
sss = open(path_to_file, 'r')
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 15:38
Kurum
Да, так работает )).
На другом форуме мне подсказали вот такое решение в терминале:
cd ~/Документы/Питон; python3 Timer.pyw
Тоже работает.
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 15:49
achagaev
Либо ещё прописать полный путь тут:
sss = open('res/dark.stylesheet', 'r') -> sss = open('~/Документы/Питон/res/dark.stylesheet', 'r')
Суть в том, что питон стартует из его родной директории, а не из директории скрипта. и Ваш относительный путь не находится.
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 16:09
PantiL
Kurum писал(а): ↑04 янв 2018, 15:38
Да, так работает )).
С моим решением будет работать, неважно откуда запускать скрипт.
achagaev писал(а): ↑04 янв 2018, 15:49
Либо ещё прописать полный путь тут
В моем решении именно это и сделано, только полный путь вычисляется динамически, неважно где будет располагаться скрипт.
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 17:09
Kurum
Вопрос по поводу первого сообщения открыт.
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 17:19
achagaev
PantiL писал(а): ↑04 янв 2018, 16:09
В моем решении именно это и сделано, только полный путь вычисляется динамически, неважно где будет располагаться скрипт.
Не спорю, я не особо питонист, но тут сразу бросается в глаза относительность пути.
2Kurum,
А первый вопрос - это какой? Чтоб окно терминала не закрывалось после выполнения? Если да, то поищите инфу как зафризить его, для баша (если его как обёртку используете) есть команда 'pause'. Если у Вас чисто питон, то явно что-то тоже имеется,
вот например raw_input()/input() советуют
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 17:27
Kurum
Первый вопрос - это "как правильно сделать ярлык для запуска файла питона?".
Теперь у меня получилось.
В сам файл надо было добавить строчку:
#!/usr/bin/env python
Причём не python3, а просто python.
И отключить галку "запускать в терминале" - ну это, конечно, кому что надо. У меня GUI-интерфейс, так что мне терминал не нужен.
Ярлык для *.pyw (python)
Добавлено: 04 янв 2018, 18:10
PantiL
Kurum писал(а): ↑04 янв 2018, 17:27
Причём не python3, а просто python
Ну это смотря какая версия питона тебе нужна. По-умолчанию сейчас команда python соответствует версии Python 2.7.12 (ну у меня так в 18.3) Если же для выполнения скрипта нужна версия 3.* то тогда команда должна быть python3