代码之家  ›  专栏  ›  技术社区  ›  Chris Curvey

使用pyuno和我现有的Python安装

  •  3
  • Chris Curvey  · 技术社区  · 14 年前

    我试图使用PyUNO作为一种方法,将不同的文档格式(doc、wordperfect、html等)从Django服务器中转换为PDF格式。我很高兴能 import uno 去工作。做的时候好像失败了 import pyuno ,消息为 ImportError: DLL Load Failed: The specified module could not be found .

    唯一的办法是使用OpenOffice附带的Python2.6,但我真的想使用我的其他2.6安装。PyUNO的文档都是针对Python 2.2的,据说已经过时了。

    我猜需要将以下部分(或全部)文件从OpenOffice目录复制到我的site packages目录(或其子目录):

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

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

    这是在窗户上。

    3 回复  |  直到 12 年前
        1
  •  2
  •   user535733    14 年前

    对于简单的转换,你不需要重新发明轮子。看看优尼科: 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安装中的三个环境变量是: (使用Python2.6和OO3.1.2)

    • os.environ['URE_BOOTSTRAP']=“vnd.sun.star.pathname:c:\程序文件\OpenOffice.org 3\Program\Basic.ini”
    • os.environ['UNO_PATH']=“c:\程序文件\ OpenOffice.org 3 \程序”
    • os.environ['PATH'].append('c:\程序文件\ OpenOffice.org 3\URE\bin;c:\程序文件\ OpenOffice.org 3\Basis\Program;')

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

    • sys.path.append('C:\程序文件\OpenOffice.org 3\Basis\Program')

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

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

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

        2
  •  0
  •   user523013    14 年前

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

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

    我知道在Linux中,Pyuno模块是一个插件,可以在普通的python中使用,但在windows中似乎不是这样。我已经列出了openoffice下python exec的所有相关路径细节,并在python 2.7中复制了它们,但是pyuno仍然失败,因为找不到DDL而没有引用什么DDL。

        3
  •  0
  •   Chris Curvey    14 年前

    我认为答案是“这是不可能的”。从网络上的其他阅读来看,用于编译/链接python.org中python可执行文件的stdlib与用于编译/链接随OpenOffice.org分发的python.exe的stdlib不同。我不知道为什么,我仍然困惑于两条蟒蛇给我的启动信息是一样的。所以我可能完全走错了路。