Использование Shell

Автор dr.Faust, 3 июня 2010, 19:57

0 Пользователи и 1 гость просматривают эту тему.

Рыбка Рио

Кстати, такой макрос тоже работает:
Shell("bash -c 'chmod +x ""/home/user/Рабочий стол/123.sh""'")

Таким образом, можно написать расширение, которое запустит любой скрипт, в т.ч. Питон. И значит, можно в расширение записать внешнюю программу, которая будет взаимодействовать с OOo, например, внешний калькулятор, написанный на Питоне, который сохранит результаты измерений в файл, а OOo потом откроет этот файл.
ubuntu 12.04 + LibO3.6.0

N2H4

А почему не просто Shell("chmod +x /home/user/123.sh")?
Здесь-то нет ни перенаправления потока, ни подстановок - просто запуск программы с параметрами.

Да и не проще ли сразу вызвать интерпретатор Python и передать ему скрипт?

А вообще, мы так скоро до макровирусов допишемся...

Рыбка Рио

Да, можно python сразу запустить,
так?
Shell("bash -c 'chmod +x /home/user/123.py ; python /home/user/123.py')

Способ с bash мне кажется более универсальный, хотя иногда может и без bash -c работает.
ubuntu 12.04 + LibO3.6.0

N2H4

#33
Вообще-то, подразумевалось

Shell("python /home/user/123.py")

Оно и без бита +x отлично интерпретируется.

Что же касается bash -c, то, как мне кажется, это нужно там, где используются возможности bash — перенаправление потоков, раскрытие конструкций вроде cr*.t??, встроенные команды оболочки etc. Если никаких наворотов не нужно, а нужно только запустить программу и передать ей параметры — зачем?©

Рыбка Рио

У меня не работает, кстати, ни
Shell("chmod +x /home/user/123.py")
ни
Shell("python /home/user/123.py")
почему-то.
С bash -c работает.
ubuntu 12.04 + LibO3.6.0

N2H4

Что же, значит, система действительно не может противиться моему обаянию...
У меня работают оба варианта — разумеется, с полным путём к домашнему каталогу, а не с сокращённой формой ~/123.py

Рыбка Рио

Хотя нет, извините, всё работает и без bash -c.
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

Просто я в наутилусе права смотрю (файл/свойства/права), а кнопку "обновить" не нажимаю. Вот и показывает устаревшую информацию.
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

Кстати, почему-то при попытке запустить tutgui.py (архив , сама статья Tutorial: Using Python/Glade to create a simple GUI application. - Overclock.net - Overclocking.net) командой
Shell("bash -c 'python /home/user/tutorial/tutgui.py > /tmp/123'")
В файле /tmp/123 пишет: GTK not available.
(Перед запуском в файле tutgui.py отредактирован путь
gtk.glade.XML( "/home/user/tutorial/main.glade" ))
ubuntu 12.04 + LibO3.6.0

dr.Faust

Конечно будет работать и без bash.
Также можно и любую программу запустить, в том числе и в винде - это же прямое назначение Shell.
Можно даже запустить таким образом ... макрос - "soffice -nologo "macro:///MyLib.MyModule.MyMacro"".
Я пробовал такое когда пытался добится асинхронной работы макросов для распараллеливания. Но этот способ слишком медленный, да и вообще асинхронность планомерно выкашивают из OOo Basic :(
Свобода информации - свобода личности!

prof-alex

Цитата: Трио от  9 июня 2010, 23:45
Кстати, почему-то при попытке запустить tutgui.py В файле /tmp/123 пишет: GTK not available.
Офис ванильный? Если да, то у него свой python, в котором действительно нет gtk. И PYTHONPATH он переопределяет на себя.

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

Рыбка Рио

Так тут же запускает не OOo , а bash - он же вроде должен запускать как из терминала? Из терминала запускается, а из Shell - нет. Как это объяснить? Может чего-то не хватает? Может он X сервер не может найти?
ubuntu 12.04 + LibO3.6.0

prof-alex

Нет, при запуске ООо устанавливаются переменные окружения таким образом, что бы системный python не мешал. "Видно" весь этот цирк с окружением только ООо и его потомкам. Как мне кажется Shell именно потомков и плодит...

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

Рыбка Рио

А можно ли как-то обойти это, т.е. запустить GTK диалог через внешний pyhton?
ubuntu 12.04 + LibO3.6.0

prof-alex

Можно, для этого нужно собрать ООо с системным python'ом. Самый простой способ сделать это - поставить gentoo и собрать openoffice (без суффикса -bin). (Шутка)

Переменные окружения вернуть назад, опять же удобнее всего каким-нибудь скриптом. Взаимодействие через UNO, при этом работать не будет.

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра