Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在现有python安装中使用pyuno_Python_Openoffice.org_Pyuno - Fatal编程技术网

在现有python安装中使用pyuno

在现有python安装中使用pyuno,python,openoffice.org,pyuno,Python,Openoffice.org,Pyuno,我正在尝试使用PyUNO作为一种方法,从Django服务器中将不同的文档格式(doc、wordperfect、html等)转换为PDF。我在导入uno工作上花了很长时间。执行导入pyuno时,它似乎失败,并显示一条消息导入错误:DLL加载失败:找不到指定的模块 我实现这一点的唯一方法是使用OpenOffice附带的Python2.6,但我确实希望使用我的另一个2.6安装。PyUNO的文档都是python2.2的,据说已经过时了 我猜以下部分(或全部)文件需要从OpenOffice目录复制到我的s

我正在尝试使用PyUNO作为一种方法,从Django服务器中将不同的文档格式(doc、wordperfect、html等)转换为PDF。我在
导入uno
工作上花了很长时间。执行
导入pyuno
时,它似乎失败,并显示一条消息
导入错误:DLL加载失败:找不到指定的模块

我实现这一点的唯一方法是使用OpenOffice附带的Python2.6,但我确实希望使用我的另一个2.6安装。PyUNO的文档都是python2.2的,据说已经过时了

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

有没有人成功地让它工作


这是在Windows上。我还需要一个答案。我使用的是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。

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

对于简单的转换,你不需要重新发明轮子。看看unoconv:

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

备选方案1:对于Win32系统上的其他Python安装,您需要导入三个环境变量并向Pythonpath添加一项。详细教程见

必须从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\Basic.ini”
  • os.environ['UNO_PATH']='c:\Program Files\OpenOffice.org 3\Program\'
  • 附加('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兼容。由于OO3.1捆绑了Python2.6.1,因此该pyuno仅与另一个Python2.6兼容。尝试将uno导入其他版本的Python将导致运行时错误。但在备选方案2中有一种解决方法

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

  • 安装pywin32module以获得COM访问权限:
  • 关于API差异的讨论:

您能使用xlwt创建excel文件吗(完全不同的方式)?据介绍,使用PyUNO库需要使用OOo附带的Python,因为它们与不同的stdlib链接:(
pythonloader.py
pythonloader.uno.ull
pythonloader.uno.ini
pythonscript.py
pyuno.pyd