python - 在 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项目,了解使用 conda 的打包脚本示例。你是对的,不能保证它会起作用,但至少到目前为止我还没有看到任何问题。
压缩包只有 170MB 左右,但在安装过程中扩展至近 1GB,其中大部分是 TensorFlow 二进制文件。
推荐阅读
- dask - 如何使用 Dask DataFrame “重新索引”
- powerbi - Dax中sql语句的转换
- java - 使用 lambda 而不是显式匿名内部类时的不同泛型行为
- php - 在codeigniter中搜索后如何保留选定的框选项
- asp.net - 来自控制器的 asp.net mvc 加载查询
- php - 使用 php 文件中的插件创建页面模板,无需打开 php 文件,模板句柄来自 wp-admin 端
- java - 一个菜鸟求指导,ps用java写的
- ios - swift 4中的自定义日期选择器标签
- javascript - n+Math.random() 是否总是小于 n+1?
- graphics - 在 P5.js 中快速绘制单个像素