Ubuntu:/usr/lib/libreoffice/program找不到LibreOffice自带的python二进制文件

7 篇文章 0 订阅
3 篇文章 0 订阅

环境信息:我的Ubuntu版本是Ubuntu 22.04.1 LTS,安装的LibreOffice版本是7.3.7。
我到/usr/lib/libreoffice/program找不到LibreOffice自带的python解释器二进制文件(在windows下是能找到的)。

  • 用各种命令查找没有查找到。其它目录中倒是有python解释器,但用dpkg -S <文件全路径>命令查看,也不是LibreOffice包引起的安装。

  • 到Ubuntu包仓库中http://cn.archive.ubuntu.com/ubuntu/pool/universe/libr/libreoffice/查找,看看有哪些包中可能含有,就用sudo
    apt install安装,尝试了一遍,没有。

  • 用sudo apt install unoconv安装了unoconv这个包。unoconv是调用LibreOffice进行文档转换的。安装后尝试对一篇docx文档转换为pdf,可以正常转换。于是打开文件/usr/bin/unoconv查看别人的源代码,看别人到底使用的是哪边的python解释器。文件开头的一行代码如下:

#!/usr/bin/env python3

说明它调用的是Ubuntu系统自己安装的python解释器。我将unoconv保存为另外一个文件,方便我随便修改调试。我在代码的有些地方用print语句打印,确信它使用的就是Ubuntu自带的python解释器。再看它的代码,在import uno之前,使用sys.path.append修改导包搜索路径,防止找不到uno所在的路径,在我的机器上是/usr/lib/python3/dist-packages/uno.py

### Main entrance
if __name__ == '__main__':
    exitcode = 0

    #info(3, 'sysname=%s, platform=%s, python=%s, python-version=%s' % (os.name, sys.platform, sys.executable, sys.version))
         
    for of in find_offices():
        print("basepath:",of.basepath)
        print("urepath:",of.urepath)
        print("unopath:",of.unopath)
        print("officelibrary:",of.pyuno)
        print("officebinary:",of.binary)
        print("python:",of.python)
        print("pythonhome:",of.pythonhome)  
  • 我于是单独执行python3,启动Ubuntu自带的python解释器,将sys.path的执行结果打印出来,里边有UNO的路径:

在这里插入图片描述
经过一顿折腾,总算明白了Ubuntu下原来是可以调用系统的python解释器来访问LibreOffice的,只不过要关注UNO的所在路径是否在导包搜索路径中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值