'module' object has no attribute 'getComponentContext'

Автор Al_Ex, 16 мая 2017, 17:33

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

Al_Ex

На рабочей машине Windows установлена версия Python27 + PyCharm + LibreOffice 5.3.
Инсталлировал PyUno, чтобы из скрипта вызывать LibreOffice.
Отсюда взял пример вызова http://www.openoffice.org/udk/python/python-bridge.html

import socket  # only needed on win32-OOo3.0.0
import uno

# get the uno component context from the PyUNO runtime
localContext = uno.getComponentContext()

# create the UnoUrlResolver
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext )
...........................


При выполнении скрипта получаю ошибку:

C:\Python27\python.exe C:/Users/.../PycharmProjects/Script/Script.py
Traceback (most recent call last):
  File "C:/Users/.../PycharmProjects/Script/Script.py", line 5, in <module>
    localContext = uno.getComponentContext()
AttributeError: 'module' object has no attribute 'getComponentContext'

Process finished with exit code 1


Изменить версию Питона нет возможности, т.к. все скрипты нужно писать в 2.7.
Или проблема не в версии?

Yakov

А использовать Apache Open Office 4.1.3? (там как раз Python 2.7  для версии под Windows)

Al_Ex

Цитата: Yakov от 16 мая 2017, 20:55
А использовать Apache Open Office 4.1.3? (там как раз Python 2.7  для версии под Windows)
Именно это я и использовал.
Может ли быть проблема в том, что Python установлен в корне диска C:\Python27, а Apache Open Office 4.1.3 установлен в C:\Program Files (x86). Или это не важно?
В PATH прописано C:\Python27\;C:\Python27\Scripts;
Как говорится по колесам стучал, капот открывал...

economist

В своё время тоже помучился и сделал вывод что с PyUNO надежно можно работать
только "родным" Python, из папки самого OpenOffice|LibreOffice. Либо не использовать PyUNO.
Под виндой есть еще COM.

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Al_Ex

Изменил в PyCharm configuration for Script -> Python interpreter: Python 2.7.13 (C:\Program Flles (x86)\OpenOffice 4\programm\python.exe).
Теперь

import uno
ImportError: No module named uno

Где же uno? Видимо у меня мало опыта в этом, что же происходит?

Al_Ex

Что интересно, попробовал на MacOS:

$ python --version
Python 2.7.13

$ pip install uno
Requirement already satisfied: uno in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Requirement already satisfied: py==1.4.22 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from uno)
Requirement already satisfied: pytest==2.6.0 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from uno)

LibreOffice
Version: 5.3.2.2

Запускаю в PyCharm тот же стартовый скрипт и снова

ImportError: No module named uno


Al_Ex

Мои успешные действия на MacOS были такие, может кому будет полезно:
На основе https://pypi.python.org/pypi/unotools
1. Установить последнюю версию приложения https://www.libreoffice.org/
2. Скачать unotools https://bitbucket.org/t2y/unotools/downloads/
3. Скачать singledispatch https://bitbucket.org/ambv/singledispatch/downloads/
4. Прописать путь export PYTHONPATH="/path/to/singledispatch/:/path/to/unotools/"
5. Т.к. на MacOS есть предустановленный по дефолту Python2.7, а в Libre свой Python3.5, то запускать нужно именно Питон из Либры, т.к. Унотулз работает только с Питоном версии выше 3.3. Запускать отсюда: /Applications/LibreOffice.app/Contents/Resources