Pergunta

Estou tentando usar o PyUNO como um método para converter diferentes formatos de documentos (doc, wordperfect, html, etc) para PDF a partir do meu servidor Django.Estou tendo muita dificuldade para conseguir import uno trabalhar.Parece falhar ao fazer import pyuno, com uma mensagem de ImportError: DLL Load Failed: The specified module could not be found.

A única maneira de fazer isso funcionar é usar o Python 2.6 que acompanha o OpenOffice, mas eu realmente quero usar minha outra instalação 2.6.Os documentos do PyUNO são todos para Python 2.2 e são considerados desatualizados.

Suponho que alguns (ou todos) dos seguintes arquivos precisam ser copiados do diretório OpenOffice para meu diretório de pacotes de sites (ou algum subdiretório dele):

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

Alguém teve algum sucesso em fazer isso funcionar?

Isso está no Windows.

Foi útil?

Solução

Para conversões simples, você não precisa reinventar a roda.Veja unoconv: http://dag.wieers.com/home-made/unoconv/

'Import uno' funcionará automaticamente SE o interpretador python estiver incluído no OpenOffice ou em alguns sistemas Linux onde os empacotadores já fizeram muito trabalho para você.

Alternativa 1:Para outras instalações do Python em sistemas Win32, você precisa importar três variáveis ​​de ambiente e adicionar um item ao seu Pythonpath.O tutorial detalhado está em http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=36370&p=166783

As três variáveis ​​de ambiente que você deve obter do Python instalado no OO e adicionar à outra instalação do Python são:(Usando Python 2.6 e OO 3.1.2)

  • os.environ['URE_BOOTSTRAP'] = 'vnd.sun.star.pathname:c:\Arquivos de programas\OpenOffice.org 3\program\fundamental.ini'
  • os.environ['UNO_PATH'] = 'c:\Arquivos de programas\OpenOffice.org 3\programa\'
  • os.environ['PATH'].append('c:\Arquivos de Programas\OpenOffice.org 3\URE\bin;c:\Arquivos de Programas\OpenOffice.org 3\Basis\program;')

O item pythonpath que você deve adicionar à sua outra instalação do Python é o local do módulo uno:

  • sys.path.append('C:\Arquivos de programas\OpenOffice.org 3\Basis\program')

Agora você pode simplesmente 'importar uno'.

Pyuno é compatível apenas com uma versão semelhante do Python.Como o OO 3.1 agrupa o Python 2.6.1, esse pyuno só é compatível com outro Python 2.6.Tentar importar uno para uma versão diferente do Python causará um erro de tempo de execução.Mas há uma maneira de contornar isso na Alternativa 2.

Alternativa 2:Para outras instalações do Python em sistemas WIN32, você pode ignorar completamente a ponte Python-UNO e usar a ponte Python-COM.Você deve instalar um novo módulo, e a API tem algumas diferenças, mas você pode usar QUALQUER versão do Python, incluindo Python3.

Outras dicas

Eu também preciso de uma resposta para isso. Estou usando o Windows XP e tenho um sistema em que extraímos dados de um banco de dados SQL Server e insira -o em arquivos de excel modelo. Não quero adicionar macro's etc ao OpenOffice. Mas quero usar o serviço para produzir esses arquivos.

No entanto, a única maneira de ser capaz de importar o Modude UNO é usar o Python.exe no diretório do OpenOffice. Mesmo assim, não posso associar esse executivo aos arquivos PY no meu sistema, por algum motivo, portanto, tenho que colocar nomes de caminhos completos todas as vezes.

Eu sei que no Linux, o módulo Pyuno é um complemento e pode ser usado no Python normal, mas no Windows esse não parece ser o caso. Listei todos os detalhes do caminho relevante do executivo do Python no OpenOffice e os dupliquei no Python 2.7, mas o pyuno ainda falha com o INDA PLAPE de encontrar DDL sem referência ao que DDL.

Eu acho que a resposta é "isso não é possível". De outra leitura na web, parece que o stdlib usado para compilar/vincular o executável do Python do python.org é diferente do stdlib usado para compilar/vincular o python.exe distribuído ao OpenOffice.org. Não sei por que, e ainda estou confuso com o fato de que ambos os pítons me dão as mesmas mensagens de inicialização. Então, eu poderia estar completamente na faixa errada aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top