2010-11-24 6 views
3

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

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

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

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

Кто-нибудь имел какой-либо успех, чтобы это работало?

Это на Windows.

+0

согласно http://www.oooforum.org/forum/viewtopic.phtml?t= 4818, использование библиотеки PyUNO требует использования Python, который поставляется с OOo, потому что они связаны с разными stdlib. :( – 2010-11-30 13:40:36

ответ

2

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

«Импорт uno» будет автоматически работать, если интерпретатор python был в комплекте с OpenOffice или в некоторых Linux-системах, где пакеты уже много сделали для вас.

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

Три переменные окружения вы должны получить от вашего ОО-Installed-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.. Окружать [ 'PATH'] присоединять ('C: \ Program Files \ OpenOffice.org 3 \ URE \ Bin; C: \ Program Files \ OpenOffice.org 3 \ Basis \ программы;')

The PYTHONPATH деталь вы должны добавить свою вторую установку Python является расположение модуля уно:

  • sys.path.append ('C: \ Program Files \ OpenOffice.org 3 \ Basis \ программы')

Теперь вы можете просто «импортировать 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

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

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

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

+0

вы можете пройти с помощью xlwt, чтобы создать свои файлы excel (совершенно другой способ сделать это)? – 2010-11-29 19:27:12

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^