2010-11-24 50 views
3

我试图使用PyUNO作为一种方法将不同的文档格式(doc,wordperfect,html等)从我的Django服务器转换为PDF。我有一段时间让import uno工作。在执行import pyuno时似乎失败,并显示消息ImportError: DLL Load Failed: The specified module could not be found在我现有的python安装中使用pyuno

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

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

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

有没有人有任何成功实现这一目标?

这是在Windows上。

+0

http://sourceforge.net/projects/pywin32/

  • 探讨API差异4818,使用PyUNO库需要使用OOo附带的Python,因为它们与不同的stdlib链接。 :( – 2010-11-30 13:40:36

  • 回答

    2

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

    如果python解释器与OpenOffice捆绑在一起,或者在一些Linux系统中,包装工已经为你做了很多工作,那么'Import uno'将自动工作。

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

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

    • os.environ ['URE_BOOTSTRAP'] ='vnd.sun.star.pathname:c:\ Program Files \ OpenOffice.org 3 \ programme \ basic.ini'
    • os.environ ['UNO_PATH'] ='c :\ Program Files \ OpenOffice.org 3 \ program \'
    • os。。ENVIRON [ 'PATH']追加( 'C:\ Program Files文件\ OpenOffice.org 3 \ URE \ BIN; C:\ Program Files文件\ OpenOffice.org 3 \基础\程序;')

    的PYTHONPATH你必须添加到您的其他安装Python的项目是UNO模块的位置:

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

    现在你可以简单地'导入uno'。

    Pyuno仅与Python的类似版本兼容。由于OO 3.1捆绑了Python 2.6.1,所以pyuno仅与另一个Python 2.6兼容。试图将uno导入到不同版本的Python中会导致运行时错误。但是,还有周围的一种方式,可替代2

    替代2:对于其他的Python Win32系统安装,您可以完全忽略的Python-UNO桥和使用Python-COM桥代替。您必须安装一个新模块,并且API有一些差异,但是您可以使用任何版本的Python,包括Python3。

    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。

    +0

    你可以通过xlwt创建你的Excel文件(完全不同的方式)? – 2010-11-29 19:27:12

    0

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