有关于这个主题的几个相关的线程在这里的广告在这里 ,但他们似乎有点过时了。
我刚刚下载的LibreOffice 4,它具有内置的。使用了Python我可以导入和使用UNO蛮好的,从我的Python脚本控制办公室的Python 3.3.0。 然而,我的许多其他模块从了Python和UNO是唯一一个从我的Python失踪不见了。
有没有我可以为我的Python的安装pyuno什么办法? 该LibreOffice的源代码树包括pyuno /源代码树,但我不知道如何去构建/这个集成到另一个Python树。
这里任何经验? 救命? 提示? 该做什么,不该做什么,Dohs?
编辑 下面的答案作品就好了Linux和我没有问题,其延伸的PYTHONPATH
导入UNO。 问题是在Mac上的不同,所以看看对方的回答 。
编辑绝对拿这个前面回答与Python路径摆弄时考虑!
一旦你尝试运行PyUNO掉任何其他Python可执行比提供LO的一个,事情变得粗糙。
在Mac上的SEGV是因为LO的libpyuno.dylib(通过libuno.dylib加载,而这又是通过 “进口UNO” 加载)引用@ loader_path / LibreOfficePython.framework /版本/ 3.3 / LibreOfficePython(运行 “otool -L” 上文件;路径当前LO主;路径上的各种版本的LO稍微不同)。 当不使用LO的不同Python进程运行,这意味着会在这个过程中两个Python运行时(和LO一个甚至没有正确初始化,可能),那地方导致SEGV在LibreOfficePython。 (这种情况在Linux上,在那里libpyuno.so引用libpython3.3m.so更好的工作,通常认为通过其RPATH的LO蟒蛇一个人的旁边本身,但如果任何libpython3.3m.so恰好已经加载到进程(从另一蟒),Linux加载程序愉快地重新使用的那一个。)
Mac上的一个总的黑客是使用install_name_tool为 “重新连接” libpyuno.dylib引用其他蟒蛇的Python.framework /版本/ 3.3 / Python的(按绝对路径)而不是@ loader_path / LibreOfficePython.framework /版本/ 3.3 / LibreOfficePython。
另一个小问题,就是LO的蟒蛇(在Linux和Mac)实际上是围绕着真正的蟒蛇可执行的shell脚本。 它需要设立若干ENV瓦尔的(其目的是即使在脚本文件)。 为了从你要设置这些ENV不同的蟒蛇使PyUNO工作瓦尔得,ESP。 UNO_PATH,URE_BOOTSTRAP和PYTHONPATH的是找到LO-特定库的部分(而不是那些来与Python本身)。 请注意,这些ENV瓦尔价值观的细节LO版本不同而有差异。
这是一个迟到的回答,我不具有完全相同的设置,你有,但对我来说,我可以简单地调整PYTHONPATH
使得上述目录uno.py
生活是众所周知的蟒蛇。
bash> export PYTHONPATH=${PYTHONPATH}:/usr/lib/libreoffice/program
bash> python
>>> import uno
要求是你的LibreOffice / OO Python有相同的版本为你经常一个:Python将编译的.py至.pyc文件,并且格式不版本之间的转让(至少,不能保证)。
做一个locate uno.py
,如果你不知道从哪里你的文件。 检查其中/usr/bin/libreoffice
链接,也可能会有帮助。
Linux的
dirkjot的回答此主题在Linux上的伟大工程。
MAC(优胜美地)
事情变得有点棘手这里,而随着LibreOffice的4.3我仍然无法延长我的PYTHONPATH
到的LibreOffice和import uno
没有崩溃在Mac上:
localhost ~ > PYTHONPATH=$PYTHONPATH:/Applications/LibreOffice64.app/Contents/MacOS python3.3
Python 3.3.6 (default, Nov 12 2014, 18:18:46)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.54)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uno
Segmentation fault: 11
但这里是我的作品。 首先,我必须确保Python和我的LibreOffice是为32B或64B内置; 他们不能混用。 我和64B的MacPorts的Python 3.3和64b的LibreOffice为Mac(工作下载链接 ),它自带的Python 3.3。 第二,我必须确保运行正确的Python和延长PYTHONPATH
正确。 因为我不能运行我的MacPorts Python和与LibreOffice中的路径扩展它,我必须做的周围用另一种方式:运行LibreOffice的Python和我的MacPorts Python的路径扩展它:
localhost ~ > PYTHONPATH=$PYTHONPATH:/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages /Applications/LibreOffice64.app/Contents/MacOS/python
Python 3.3.5 (default, Dec 12 2014, 10:33:58)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.51)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uno
>>> import lxml
>>>
注意如何uno
从LibreOffice中的python路径进口和lxml
住在MacPort的Python路径中。