让 python 导入 uno / pyuno

Posted

技术标签:

【中文标题】让 python 导入 uno / pyuno【英文标题】:Getting python to import uno / pyuno 【发布时间】:2014-07-25 22:25:28 【问题描述】:

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

我基本上是尝试在 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文件夹中打开python实例,我都得到了错误:

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 有什么建议吗?

【问题讨论】:

能否发布导入错误?还用你用来安装它的命令吗? 您是否在 *** 上搜索过解决方案?例如:参见本页右侧的Related 感谢您参与其中。 @NicholasYoung - 我更新了我的帖子来告诉错误。 @furas - 我查看了相关内容,但无法找到可行的解决方案。也许我错过了你正在看的那个,你能给我链接到它,我会试试看。 您是否使用 pip 安装您的模块? 【参考方案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

在您的脚本中,为 basic.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

【讨论】:

我已经转向了另一种方法来解决我的问题,但如果其他人遇到这个问题(或者我再次尝试),我很感激你的详细回答。

以上是关于让 python 导入 uno / pyuno的主要内容,如果未能解决你的问题,请参考以下文章

Python 2.7 与 pyuno

如何在 LibreOffice 中安装或激活 PyUno?

无法在 python 中为 ubuntu 16.04 上的 libreoffice 导入 uno

使用 UNO 在同一窗口中打开多个文档

Uno Platform:未找到导入的项目

导入阶段的 UNO IllegalArgument:无法读取源文件。 URL 似乎不受支持