首页 > 解决方案 > 在 Windows 上部署预构建的嵌入式 Python 环境

问题描述

我正在考虑建立一个完全独立的 Python 环境,它将由我的 .NET 应用程序安装程序携带(或下载)。这个 Python 环境将通过 pythonnet 用于从 .NET 应用程序上下文执行 Python 代码。要求是这应该适用于所有 Windows 10 最终用户,无论他们是否在本地安装了 Python 或任何 VS 构建工具。

到目前为止我所做的工作: 与 Python.Included 项目类似,我携带了一个最小的嵌入式 python 环境,该环境已经有一个脚本来设置 pip 和 tcl 库。这个 python 环境将被部署到用户的 AppData 文件夹,如果它还没有,然后它将运行一堆pip install命令来获取一些依赖项(pythonnet、numpy、scipy、pandas)。

问题: 上面的设置适用于上面列出的包,但是当尝试安装不同的 pip 包时,一些用户开始失败,.exe该包在安装过程中也会生成一个(包是pyprophet)。在我的开发机器上,这个安装是成功的,但是对于一些用户来说,这部分失败并且没有生成最终的.exe。

我的想法是某些系统缺少一些构建工具,因此最终的 .exe 生成失败。我正在寻找有关如何确保此 .exe 可供所有用户使用的建议。一个想法是在我这边设置所有内容(包括所有 pip 命令),然后让用户的机器下载它并将其放入 AppData,但它非常大(~1GB)。另外,我还不确定最终的 .exe 是否可以像这样预先打包。我肯定更喜欢一个解决方案,其中初始 python 环境像现在一样最小,然后在需要某些模块时让它按需安装自己的 pip。

标签: python.netpippython.netpython-embedding

解决方案


不幸的是,到目前为止,我能想到的唯一方法是用最少的清理来打包整个环境。

请参阅我的PackagedTensorflow项目,了解使用 conda 的打包脚本示例。你是对的,不能保证它会起作用,但至少到目前为止我还没有看到任何问题。

压缩包只有 170MB 左右,但在安装过程中扩展至近 1GB,其中大部分是 TensorFlow 二进制文件。


推荐阅读