在宏开发期间将 python 脚本“部署”到 LibreOffice 的首选方法?

Posted

技术标签:

【中文标题】在宏开发期间将 python 脚本“部署”到 LibreOffice 的首选方法?【英文标题】:Preferred method of "deploying" python scripts to LibreOffice during macro development? 【发布时间】:2012-05-24 17:10:34 【问题描述】:

至少在 Linux 上使用 Python 为 LibreOffice / OpenOffice 开发宏时,我了解到您必须将 py 脚本放在特定目录中。

Python LibreOffice/OOo 开发人员是否有首选方法来部署这些脚本,或者是否有其他方法可以在 LibreOffice/OOo 中指定您希望这些脚本的位置?

【问题讨论】:

【参考方案1】:

也许一个不错的方法是熟悉 Python 设置工具本身 (http://packages.python.org/an_example_pypi_project/setuptools.html),并编写一个适当的 setup.py 脚本来放置所有需要的文件在适当的目录中。

您的宏甚至可以使用“easy_install”Python 框架进行安装

【讨论】:

setup.py 是否类似于 make 或 ant 或 maven 或 rake 任何其他数量的构建工具? 这里是 setup.py 是什么问题的答案:***.com/questions/1471994/what-is-setup-py【参考方案2】:

为避免重新加载已更改的宏(即使将其部署到正确的文件夹),您可以让 LibreOffice 在开发期间侦听套接字:

import uno

def getModel():
    # get the uno component context from the PyUNO runtime
    localContext = uno.getComponentContext()

    # create the UnoUrlResolver
    resolver = localContext.ServiceManager.createInstanceWithContext(
    "com.sun.star.bridge.UnoUrlResolver", localContext)

    # connect to the running office
    context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
    manager = context.ServiceManager

    # get the central desktop object
    desktop = manager.createInstanceWithContext("com.sun.star.frame.Desktop", context)

    # access the current writer document
    return desktop.getCurrentComponent()

当你准备好在this article中部署时,我解释了如何替换这个开发道具

【讨论】:

始终欢迎提供指向潜在解决方案的链接,但请add context around the link,以便您的其他用户知道它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。考虑到仅仅是指向外部站点的链接是Why and how are some answers deleted? 的一个可能原因。

以上是关于在宏开发期间将 python 脚本“部署”到 LibreOffice 的首选方法?的主要内容,如果未能解决你的问题,请参考以下文章

在开发期间将文件复制到/从 NSDocumentDirectory

Python无法使用PyAutoGui补间将鼠标作为函数中的随机值移动

如何部署python脚本?

Spring Webflow:如何在转换期间将属性从一个流传递到另一个流?

weblogic能部署python+Django开发的web应用吗

Access 和 VBA:在导入期间将日期添加到一列的所有值