让python导入uno / pyuno

时间:2014-07-25 22:25:29

标签: python libreoffice uno

我一整天都在寻找解决方案,而且似乎无法找到任何可行的方法,只是一堆看似过时或无法使用的潜在客户。

我基本上是想在python中找到一个hello-world状态,这样我就可以从数据库数据开始以编程方式创建文档页面。

我尝试安装了libreoffice和openoffice。我将文件安装在默认位置(我做了Windows 7(C:\ Program Files(x86)\ LibreOffice 4)并安装了ubuntu 14并尝试了默认路径(/ usr / lib / libreoffice)。

我在sdk文件夹中遇到了bat脚本()的问题,所以我甚至尝试在基础目录中重新安装,在windows中没有空格c:\ libreoffice。

我尝试了许多操作来尝试更改PYTHON PATH设置并安装不同版本的python。

有没有人对如何让python设置制作openoffice文档有什么建议?刚刚通过'import uno'语句没有导入错误?我确定这是愚蠢的,但我完全失去了。

提前致谢。

编辑: 我得到的错误是标准模块未找到错误我得到了错误,无论我是在我的本地版本中打开python实例还是在libreoffice文件夹中的那个:

C:\Libreoffice\program\python-core-3.3.3\bin>python
Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:18:40) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import uno
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'uno'

编辑2: 当我执行查找并在程序文件夹中找到uno.py时,我遇到了'uno'问题。我把它添加到我的python路径并且uno加载。但是,现在我得到了一个不同的错误:

Traceback (most recent call last):
  File "C:\Users\Alex\workspace\OOTest\test\test.py", line 7, in <module>
    import uno
  File "C:\Libreoffice\program\uno.py", line 21, in <module>
    import pyuno
ImportError: DLL load failed: The specified module could not be found.

我做了一个发现并找到了以下内容:

C:\Libreoffice>find|grep pyuno*
./program/pyuno.pyd
./program/services/pyuno.rdb
./share/registry/pyuno.xcd

我尝试将程序文件夹添加到我的Windows路径(已经在python路径中)并且仍然有相同的错误。

有关加载pyuno的任何建议吗?

1 个答案:

答案 0 :(得分:1)

为了从另一个python运行uno,我发现我必须设置三个值。 在Win7上,您可以将所有三个设置为用户帐户的用户定义环境值。注销然后再打开它们才能开始工作。

经过一些尝试和错误后,我提出了以下解决方案。

在python安装的lib \ site-packages文件夹中,添加一个OpenOffice.pth文件,其中包含安装子文件夹程序的路径,如:

content of OpenOffice.path:
C:\Program Files (x86)\OpenOffice.org 4\basis\program

我没有使用Python 2.7在Win7上使用它来从脚本中设置此值。这就是我使用.pth文件的原因。使用OpenOffice 3.x,路径想要到C:\ Program Files(x86)\ OpenOffice.org 3 \ basis \ program。

import os
os.environ["URE_BOOTSTRAP"] = r"vnd.sun.star.pathname:C:\Program Files (x86)\OpenOffice 4\program\fundamental.ini"
os.environ["PATH"] += r";C:\Program Files (x86)\OpenOffice 4\program"
import uno

在您的脚本中,将两个environ值设置为fundamental.ini和子文件夹\ program。

使用OpenOffice 3.x,第二个环境必须看起来像这样

os.environ["PATH"] += r";C:\Program Files (x86)\OpenOffice.org 3\URE\bin"

当然,您必须更改这些路径以适合您的安装。 您可能希望在导入uno后立即删除BOOTSTRAP,因为如果在同一台计算机上运行不同版本的OpenOffice或LibreOffice,则会导致冲突。

os.environ.pop("URE_BOOTSTRAP")

重要! 这只适用于你的python与OpenOffice随附的python相同的版本,即 OpenOffice 3.x python 2.6 OpenOffice 4.x python 2.7 LibreOffice 4.x python 3.3