3

我正在尝试使用 PyUNO 作为将不同文档格式(doc、wordperfect、html 等)从我的 Django 服务器中转换为 PDF 的方法。我import uno上班的时间真是太糟了。执行时似乎失败import pyuno,并显示ImportError: DLL Load Failed: The specified module could not be found.

我可以让它工作的唯一方法是使用 OpenOffice 附带的 Python 2.6,但我真的想使用我的其他 2.6 安装。PyUNO 的文档都是针对 Python 2.2 的,并且被认为是过时的。

我猜测需要将以下部分(或全部)文件从 OpenOffice 目录复制到我的站点包目录(或其某些子目录):

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

有没有人成功地让它工作?

这是在 Windows 上。

4

3 回答 3

2

对于简单的转换,您无需重新发明轮子。看看 unoconv:http ://dag.wieers.com/home-made/unoconv/

如果 python 解释器与 OpenOffice 捆绑在一起,或者在打包程序已经为您完成大量工作的某些 Linux 系统中,“Import uno”将自动工作。

备选方案 1:对于 Win32 系统上的其他 Python 安装,您需要导入三个环境变量并将一项添加到您的 Pythonpath。详细教程在http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=36370&p=166783

您必须从您的 OO 安装的 Python 中获取并添加到您的其他 Python 安装的三个环境变量是:(使用 Python 2.6 和 OO 3.1.2)

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

您必须添加到其他 Python 安装的 pythonpath 项是 uno 模块的位置:

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

现在您可以简单地“导入 uno”。

Pyuno 仅与类似版本的 Python 兼容。由于 OO 3.1 捆绑了 Python 2.6.1,因此 pyuno 仅与另一个 Python 2.6 兼容。尝试将 uno 导入不同版本的 Python 会导致运行时错误。但在备选方案 2 中有一种解决方法。

备选方案 2:对于 WIN32 系统上的其他 Python 安装,您可以完全忽略 Python-UNO 桥,而改用 Python-COM 桥。您必须安装一个新模块,API 有一些不同,但您可以使用任何版本的 Python,包括 Python3。

于 2010-12-09T00:10:04.530 回答
0

我也需要一个答案。我正在使用 Windows XP 并且有一个系统,我从 SQL 服务器数据库中提取数据并将其插入到模板 excel 文件中。我不想将宏等添加到 OpenOffice。但我想使用该服务来生成这些文件。

但是,我似乎能够导入 uno 模式的唯一方法是使用 openoffice 目录中的 python.exe。即使那样,由于某种原因,我也无法将此 exec 与系统中的 py 文件相关联,因此我必须每次都输入完整的路径名。

我知道在 Linux 中,Pyuno 模块是一个插件,可以在普通 python 中使用,但在 Windows 中似乎并非如此。我已经在 openoffice 下列出了来自 python exec 的所有相关路径详细信息,并在 python 2.7 中复制了它们,但是 pyuno 仍然失败,无法找到 DDL 而没有参考什么 DDL。

于 2010-11-28T15:14:06.537 回答
0

我认为答案是“这是不可能的”。从网络上的其他阅读来看,用于从 python.org 编译/链接 python 可执行文件的 stdlib 似乎与用于编译/链接随 OpenOffice.org 分发的 python.exe 的 stdlib 不同。我不知道为什么,我仍然对两个 python 给我相同的启动消息这一事实感到困惑。所以我在这里可能完全走错了路。

于 2010-12-03T01:30:32.800 回答