【问题标题】:Deployment of application with embedded Python 3使用嵌入式 Python 3 部署应用程序
【发布时间】:2012-06-05 20:48:49
【问题描述】:

我目前正在开发一个用 C++ 编写的应用程序。出于编写脚本的目的,我使用 Python 3.2,这很好——在我的开发人员机器上安装了 Python,并且所有 DLL 都在正确的位置。

我在使用出色的 py2exe 之前部署了“纯” Python 应用程序(即没有本机代码),但我不知道如何使用嵌入式 Python 进行部署。

根据我的直觉,我认为以下组件是必要的:

  • Python3.dll & Python32.dll
  • Python 的“DLLs”目录中的 .pyd 文件
  • Python 库

最后一点是困扰我的一点:我该如何部署那个?那是几千个文件,我真的不想复制它。 Py2exe 将其打包成一个 zip 文件,我想我也可以这样做吗? 而且,更重要的是:如何在运行时告诉 Python 解释器他在哪里找到库?

【问题讨论】:

标签: c++ python deployment scripting packaging


【解决方案1】:

这已在 Python 3.5 版本中得到解决,该版本提供了一个用于集成的最小包。

https://docs.python.org/3.5/using/windows.html#embedded-distribution

嵌入式发行版是一个包含最小 Python 的 ZIP 文件 环境。它旨在作为另一个应用程序的一部分, 而不是被最终用户直接访问。

https://docs.python.org/3/faq/windows.html#how-can-i-embed-python-into-a-windows-application 提供了一些关于如何将 Python 实际嵌入应用程序(链接 python3.dll)的提示

【讨论】:

    【解决方案2】:

    据我所知,您需要捆绑的内容取决于您的 python 脚本调用或使用的内容。如果你真的只使用核心解释器,我认为你只需要捆绑 dll。

    话虽如此,通过禁用任何已安装的 python 的路径并将你的应用程序和 python dll 和库放入同一个测试文件夹中,在你的开发机器上测试它应该不会太难。

    【讨论】:

    • 因为空间不是问题(但)我想运送整个图书馆。与此同时,我环顾四周,当它的名称为 pythonXY.zip(X = 主要版本,Y = 次要版本,在我的情况下为 32)时,它似乎会自动从 ZIP 存档中导入内容。我会调查一下,然后在这里报告。但无论如何,只复制解压缩的文件可能更容易。
    【解决方案3】:

    这个site 应该会很好地指导你。您基本上所做的是将 python 脚本编译为 .exe 而不是让 python 每次都解释 .py 文件。它也会更快。

    【讨论】:

    • 它不是一个独立的 Python 应用程序。应用程序本身是用 C++ 编写的,并且仅将 Python 用于脚本目的。因此,我实际上没有任何东西可以创建 .exe,因为用户输入了一些他想在运行时在我的 C++ 应用程序的上下文中执行的 Python 代码......
    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 2015-11-28
    • 1970-01-01
    • 2017-07-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多