Найти - Пользователи
Полная версия: Python & OOo: couldn't connect to socket
Начало » Python для экспертов » Python & OOo: couldn't connect to socket
1
Все ники заняты
Пытаюсь запустить первый пример “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
А ты его так запускаешь: soffice “-accept=socket,host=localhost,port=2002;urp;”? Что после запуска netstat -a выдает, сокет ООо слушает?
Все ники заняты
Я его очень глупо запускаю, ярлыком со стола. Сейчас под рукой ничего нет (сижу на винде, ООо нет вообще), смогу только поздно вечером попробовать. Если не трудно, ссылочку на перечень параметров командной строки ООо можно? Там ведь много вариантов должно быть (насколько помню, ярлык запускает вообще не “soffice”, а совсем другую программу (или скрипт).
Все ники заняты
Действительно, всё работает, если запускать ООо с помощью команды soffice “-accept=socket,host=localhost,port=2002;urp;”, спасибо.
slivlen
Все ники заняты
Действительно, всё работает, если запускать ООо с помощью команды 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)
Однако, на “break” попасть не получается - всё время неудача. OOo вроде запускается как надо, writer открывается, но подключиться не удаётся.
Все ники заняты
Может, я чего напутал с os.spawnv? (Мне нужен просто отдельный процесс, запущенный “асинхронно”.)
И я не понимаю разницы между os.P_NOWAITO и os.P_NOWAIT (скрипт не работает и так, и так).
sashok
была такая же проблема решил так
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
я сделал так: http://www.frutik.te.ua/?p=37#more-37
в питоне шарю тоже очень слабо и тем не менее эта штука (точнее ее немножко переделаный потомок) отпечатала несколько тысяч договоров
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB