在 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。

解决方法

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

请参阅我的 PackagedTensorflow 项目以了解 packing script example using conda。你是对的,不能保证它会起作用,但至少到目前为止我还没有看到任何关于 TensorFlow 的问题。

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