Форум сайта python.su
Пытаюсь запустить первый пример “Hello World” из этой статьи: http://udk.openoffice.org/python/python-bridge.html. Вот кусок кода:
import sys
sys.path.append('/usr/lib/ooo-2.0/program')
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext)
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
ctx = resolver.resolve(“uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext”)Ошибка выходит вне зависимости от того, запущен ООо, или нет. Под root'ом - тоже самое.
__main__.NoConnectException: Connector : couldn't connect to socket (Success)
Офлайн
А ты его так запускаешь: soffice “-accept=socket,host=localhost,port=2002;urp;”? Что после запуска netstat -a выдает, сокет ООо слушает?
Офлайн
Я его очень глупо запускаю, ярлыком со стола. Сейчас под рукой ничего нет (сижу на винде, ООо нет вообще), смогу только поздно вечером попробовать. Если не трудно, ссылочку на перечень параметров командной строки ООо можно? Там ведь много вариантов должно быть (насколько помню, ярлык запускает вообще не “soffice”, а совсем другую программу (или скрипт).
Офлайн
Действительно, всё работает, если запускать ООо с помощью команды soffice “-accept=socket,host=localhost,port=2002;urp;”, спасибо.
Офлайн
Все ники занятыТак это было в статье написано, ссылка на которую была в твоем первом посте :)
Действительно, всё работает, если запускать ООо с помощью команды soffice “-accept=socket,host=localhost,port=2002;urp;”, спасибо.
Офлайн
Ага, верно, я проглядел. А вот, кстати, FAQ по UNO:
http://wiki.services.openoffice.org/wiki/Uno/FAQ
Офлайн
Теперь пытаюсь запустить OOo, а затем подключиться к нему:
import os
import time
import sys
sys.path.append('/usr/lib/ooo-2.0/program')
import uno
args = '"-accept=socket,host=localhost,port=2002;urp;"', '-writer'
os.spawnv(os.P_NOWAITO, '/usr/lib/ooo-2.0/program/soffice', args)
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext)
while 1:
try:
print('try...')
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
break
except:
time.sleep(3)
Офлайн
Может, я чего напутал с os.spawnv? (Мне нужен просто отдельный процесс, запущенный “асинхронно”.)
И я не понимаю разницы между os.P_NOWAITO и os.P_NOWAIT (скрипт не работает и так, и так).
Офлайн
была такая же проблема решил так
arg =
pid = os.spawnv(os.P_NOWAIT,'/usr/lib/ooo-2.0/program/soffice', arg)
первый аргумент должен быть пустым он почему то не обрабатывается
+
перед
ctx = resolver.resolve(“uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext”)
нужно ставить sleep(20)
т.к. похоже что ОО не успевает подняться. я вообще в питоне не очень шарю. может кто что лучше предложит.
Офлайн
я сделал так: http://www.frutik.te.ua/?p=37#more-37
в питоне шарю тоже очень слабо и тем не менее эта штука (точнее ее немножко переделаный потомок) отпечатала несколько тысяч договоров
Отредактировано (Окт. 25, 2007 22:43:57)
Офлайн