2010-11-24 10 views
3

Ich versuche PyUNO als Methode zu verwenden. Ich habe eine Menge Zeit, import uno zu arbeiten. Es scheint zu scheitern, wenn Sie import pyuno mit einer Nachricht von ImportError: DLL Load Failed: The specified module could not be found tun.Mit PyUNO mit meiner vorhandenen Python-Installation

Die einzige Art, wie ich dies nicht erhalten zu arbeiten, ist den Python 2.6 zu verwenden, die mit Openoffice kam, aber ich mag wirklich meine andere 2.6-Installation verwenden. Die Dokumente für PyUNO sind alle für Python 2.2 und angeblich veraltet.

Ich vermute, dass einige (oder alle) der folgenden Dateien aus dem Openoffice-Verzeichnis auf meiner Website-Pakete Verzeichnis (oder ein Unterverzeichnis davon) kopiert werden müssen:

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

Hat jemand hatte jede Erfolg, dies zur Arbeit zu bringen?

Dies ist unter Windows.

+0

nach http://www.oooforum.org/forum/viewtopic.phtml?t= 4818 erfordert die Verwendung der PyUNO-Bibliothek die Verwendung von Python, das mit OOo ausgeliefert wird, da sie mit verschiedenen stdlibs verknüpft sind. :( –

Antwort

2

einfach Konvertierungen Für, müssen Sie das Rad nicht neu erfinden. Schauen Sie sich unoconv: http://dag.wieers.com/home-made/unoconv/

‚Import uno‘ wird automatisch funktionieren, wenn der Python-Interpreter wurde mit Openoffice gebündelt oder in einigen Linux-Systemen, in denen die Verpacker für Sie getan haben bereits eine Menge Arbeit.

Alternative 1: Für andere Python-Installationen auf Win32-Systemen müssen Sie drei Umgebungsvariablen importieren und ein Element zu Ihrem Python-Pfad hinzufügen. Die ausführliche Anleitung ist auf http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=36370&p=166783

Die drei Umgebungsvariablen Sie von Ihrem OO-installed-Python erhalten müssen und auf Ihre anderen von Python installieren hinzufügen sind: (mit Python 2.6 und OO 3.1.2)

  • os.environ ['URE_BOOTSTRAP'] = 'vnd.sun.star.Pfadname: c: \ Programme \ OpenOffice.org 3 \ program \ fundamental.ini'
  • os.environ ['UNO_PATH'] = 'c : \ Programme \ OpenOffice.org 3 \ program \ '
  • os.. Environ [ 'PATH'] append ('c: \ Programme \ OpenOffice.org 3 \ \ bin URE; C: \ Programme \ OpenOffice.org 3 \ \ Programm-Basis;')

The PYTHONPATH Element, das Sie Ihre andere installieren von Python ist die Lage des uno Modul hinzufügen:

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

Jetzt können Sie einfach 'uno importieren'.

Pyuno ist nur mit einer ähnlichen Version von Python kompatibel. Da OO 3.1 Python 2.6.1 bündelt, ist dieses Pyuno nur mit einem anderen Python 2.6 kompatibel. Der Versuch, uno in eine andere Version von Python zu importieren, führt zu einem Laufzeitfehler. Aber es gibt einen Weg in Alternative 2.

Alternative 2: Für andere Python-Installationen auf WIN32-Systemen können Sie die Python-UNO-Brücke vollständig ignorieren und stattdessen die Python-COM-Brücke verwenden. Sie müssen ein neues Modul installieren, und die API weist einige Unterschiede auf, Sie können jedoch JEDE Version von Python, einschließlich Python3, verwenden.

0

Ich brauche auch eine Antwort auf diese Frage. Ich benutze Windows XP und habe ein System, wo ich Daten aus einer SQL-Server-DB extrahiere und sie in Template-Excel-Dateien einfüge. Ich möchte keine Makros etc. zum OpenOffice hinzufügen. aber ich möchte den Dienst verwenden, um diese Dateien zu erstellen.

jedoch der einzige Weg, wir scheinen in der Lage zu sein, die uno modude zu importieren ist die python.exe aus dem Openoffice-Verzeichnis zu verwenden. auch dann kann ich diese exec nicht mit den py-dateien in meinem system verknüpfen, daher muss ich immer die vollständigen pfadnamen eingeben.

Ich weiß, dass in Linux das Pyuno-Modul ein Addon ist und in normalen Python verwendet werden kann, aber in Windows scheint dies nicht der Fall zu sein. Ich habe alle relevanten Pfaddetails von der Python-Exec unter openoffice aufgelistet und sie in Python 2.7 dupliziert, aber pyuno schlägt immer noch fehl mit der Suche nach DDL ohne Bezug auf welche DDL.

+0

können Sie mit xlwt durchkommen, um Ihre Excel-Dateien zu erstellen (eine völlig andere Art, es zu tun)? –

0

Ich denke, die Antwort ist: „Das ist nicht möglich.“ Aus anderen Lesestoff im Web, scheint es, dass die Stdlib verwendet, um die Python-ausführbare Datei von Python.org zu kompilieren/zu unterscheiden ist von der Stdlib zum Kompilieren/Link der python.exe verteilt mit OpenOffice.org. Ich weiß nicht warum, und ich bin immer noch verwirrt darüber, dass beide Pythons mir die gleichen Startup-Nachrichten geben. Ich könnte also hier völlig falsch liegen.

Verwandte Themen