Уведомления

Группа в Telegram: @pythonsu

#1 Март 25, 2007 15:41:08

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

Пытаюсь запустить первый пример “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'ом - тоже самое.
Как побороть?



Офлайн

#2 Март 26, 2007 10:29:17

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

А ты его так запускаешь: soffice “-accept=socket,host=localhost,port=2002;urp;”? Что после запуска netstat -a выдает, сокет ООо слушает?



Офлайн

#3 Март 26, 2007 12:12:16

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

Я его очень глупо запускаю, ярлыком со стола. Сейчас под рукой ничего нет (сижу на винде, ООо нет вообще), смогу только поздно вечером попробовать. Если не трудно, ссылочку на перечень параметров командной строки ООо можно? Там ведь много вариантов должно быть (насколько помню, ярлык запускает вообще не “soffice”, а совсем другую программу (или скрипт).



Офлайн

#4 Март 26, 2007 20:36:25

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

Действительно, всё работает, если запускать ООо с помощью команды soffice “-accept=socket,host=localhost,port=2002;urp;”, спасибо.



Офлайн

#5 Март 26, 2007 20:44:44

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

Все ники заняты
Действительно, всё работает, если запускать ООо с помощью команды soffice “-accept=socket,host=localhost,port=2002;urp;”, спасибо.
Так это было в статье написано, ссылка на которую была в твоем первом посте :)



Офлайн

#6 Март 26, 2007 21:03:48

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

Ага, верно, я проглядел. А вот, кстати, FAQ по UNO:
http://wiki.services.openoffice.org/wiki/Uno/FAQ



Офлайн

#7 Март 29, 2007 22:29:23

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

Теперь пытаюсь запустить 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 открывается, но подключиться не удаётся.



Офлайн

#8 Март 30, 2007 10:30:09

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

Может, я чего напутал с os.spawnv? (Мне нужен просто отдельный процесс, запущенный “асинхронно”.)
И я не понимаю разницы между os.P_NOWAITO и os.P_NOWAIT (скрипт не работает и так, и так).



Офлайн

#9 Окт. 25, 2007 21:42:07

sashok
От:
Зарегистрирован: 2007-10-25
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

была такая же проблема решил так
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)
т.к. похоже что ОО не успевает подняться. я вообще в питоне не очень шарю. может кто что лучше предложит.



Офлайн

#10 Окт. 25, 2007 22:39:04

frutik
От:
Зарегистрирован: 2007-10-25
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Python & OOo: couldn't connect to socket

я сделал так: http://www.frutik.te.ua/?p=37#more-37
в питоне шарю тоже очень слабо и тем не менее эта штука (точнее ее немножко переделаный потомок) отпечатала несколько тысяч договоров



Отредактировано (Окт. 25, 2007 22:43:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version