Все ники заняты
Март 25, 2007 15:41:08
Пытаюсь запустить первый пример “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”)
__main__.NoConnectException: Connector : couldn't connect to socket (Success)
Ошибка выходит вне зависимости от того, запущен ООо, или нет. Под root'ом - тоже самое.
Как побороть?
slivlen
Март 26, 2007 10:29:17
А ты его так запускаешь: soffice “-accept=socket,host=localhost,port=2002;urp;”? Что после запуска netstat -a выдает, сокет ООо слушает?
Все ники заняты
Март 26, 2007 12:12:16
Я его очень глупо запускаю, ярлыком со стола. Сейчас под рукой ничего нет (сижу на винде, ООо нет вообще), смогу только поздно вечером попробовать. Если не трудно, ссылочку на перечень параметров командной строки ООо можно? Там ведь много вариантов должно быть (насколько помню, ярлык запускает вообще не “soffice”, а совсем другую программу (или скрипт).
Все ники заняты
Март 26, 2007 20:36:25
Действительно, всё работает, если запускать ООо с помощью команды soffice “-accept=socket,host=localhost,port=2002;urp;”, спасибо.
slivlen
Март 26, 2007 20:44:44
Все ники заняты
Действительно, всё работает, если запускать ООо с помощью команды soffice “-accept=socket,host=localhost,port=2002;urp;”, спасибо.
Так это было в статье написано, ссылка на которую была в твоем первом посте :)
Все ники заняты
Март 26, 2007 21:03:48
Ага, верно, я проглядел. А вот, кстати, FAQ по UNO:
http://wiki.services.openoffice.org/wiki/Uno/FAQ
Все ники заняты
Март 29, 2007 22:29:23
Теперь пытаюсь запустить 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)
Однако, на “break” попасть не получается - всё время неудача. OOo вроде запускается как надо, writer открывается, но подключиться не удаётся.
Все ники заняты
Март 30, 2007 10:30:09
Может, я чего напутал с os.spawnv? (Мне нужен просто отдельный процесс, запущенный “асинхронно”.)
И я не понимаю разницы между os.P_NOWAITO и os.P_NOWAIT (скрипт не работает и так, и так).
sashok
Окт. 25, 2007 21:42:07
была такая же проблема решил так
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)
т.к. похоже что ОО не успевает подняться. я вообще в питоне не очень шарю. может кто что лучше предложит.
frutik
Окт. 25, 2007 22:39:04
я сделал так:
http://www.frutik.te.ua/?p=37#more-37 в питоне шарю тоже очень слабо и тем не менее эта штука (точнее ее немножко переделаный потомок) отпечатала несколько тысяч договоров