Использование pyuno с моей существующей установкой python - PullRequest
3 голосов
/ 24 ноября 2010

Я пытаюсь использовать PyUNO как метод для преобразования различных форматов документов (doc, wordperfect, html и т. Д.) В PDF с моего сервера Django.У меня чертовски много времени, чтобы заставить import uno работать.Кажется, что происходит сбой при выполнении import pyuno с сообщением ImportError: DLL Load Failed: The specified module could not be found.

Единственный способ заставить это работать - это использовать Python 2.6, поставляемый с OpenOffice, но я действительно хочу использоватьмоя другая 2.6 установка.Все документы для PyUNO предназначены для Python 2.2 и считаются устаревшими.

Я предполагаю, что некоторые (или все) из следующих файлов необходимо скопировать из каталога OpenOffice в мой каталог site-packages (или некоторый его подкаталог):

pythonloader.py
pythonloader.uno.ull
pythonloader.uno.ini
pythonscript.py
pyuno.pyd

У кого-нибудь был какой-либо успех, заставляющий это работать?

Это на Windows.

Ответы [ 3 ]

2 голосов
/ 09 декабря 2010

Для простых преобразований вам не нужно изобретать велосипед. Посмотрите на unoconv: http://dag.wieers.com/home-made/unoconv/

'Import uno' будет автоматически работать, ЕСЛИ интерпретатор python был связан с OpenOffice или в некоторых системах Linux, где упаковщики уже проделали большую работу за вас.

Альтернатива 1 : для других установок Python в системах Win32 вам необходимо импортировать три переменные окружения и добавить один элемент в Pythonpath. Подробное руководство находится на http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=36370&p=166783

Три переменные окружения, которые вы должны получить ОТ OO -установленного-Python и добавить к другой вашей установке Python: (Использование Python 2.6 и OO 3.1.2)

  • os.environ ['URE_BOOTSTRAP'] = 'vnd.sun.star.pathname: c: \ Program Files \ OpenOffice.org 3 \ program \ basic.ini'
  • os.environ ['UNO_PATH'] = 'c: \ Program Files \ OpenOffice.org 3 \ program \'
  • os.environ ['PATH']. Append ('c: \ Program Files \ OpenOffice.org 3 \ URE \ bin; c: \ Program Files \ OpenOffice.org 3 \ Basis \ program;')

Элемент pythonpath, который вы должны добавить ДО другой установки Python - это расположение модуля uno:

  • sys.path.append ('C: \ Program Files \ OpenOffice.org 3 \ Basis \ program')

Теперь вы можете просто «импортировать uno».

Pyuno совместим только с аналогичной версией Python. Поскольку OO 3.1 включает Python 2.6.1, этот pyuno совместим только с другим Python 2.6. Попытка импортировать uno в другую версию Python приведет к ошибке во время выполнения. Но есть способ обойти это в Альтернативе 2.

Альтернатива 2 : Для других установок Python в системах WIN32 вы можете полностью игнорировать мост Python-UNO и использовать вместо него мост Python-COM. Вы должны установить один новый модуль, и API имеет несколько отличий, но вы можете использовать ЛЮБУЮ версию Python, включая Python3.

0 голосов
/ 03 декабря 2010

Я думаю, что ответ "это невозможно". Из другого чтения в Интернете видно, что stdlib, используемый для компиляции / компоновки исполняемого файла python из python.org, отличается от stdlib, используемого для компиляции / компоновки python.exe, распространяемого с OpenOffice.org. Я не знаю почему, и меня все еще смущает тот факт, что оба питона выдают мне одинаковые сообщения при запуске. Так что я могу оказаться на неправильном пути.

0 голосов
/ 28 ноября 2010

Мне тоже нужен ответ на этот вопрос.Я использую Windows XP и у меня есть система, где я извлекаю данные из базы данных SQL-сервера и вставляю их в файлы шаблонов Excel.Я не хочу добавлять макросы и т. Д. В OpenOffice.но я хочу использовать сервис для создания этих файлов.

Однако единственный способ импортировать uno modude - это использовать python.exe из каталога openoffice.даже тогда я по какой-то причине не могу связать этот exec с файлами py в моей системе, поэтому мне приходится каждый раз вводить полные пути.

Я знаю, что в Linux модуль Pyunoаддон и может использоваться в обычном Python, но в Windows это не так.Я перечислил все относящиеся к пути детали из python exec в openoffice и продублировал их в python 2.7, но pyuno все равно не может найти DDL без ссылки на DDL.

...