5.2 KiB
5.2 KiB
嵌入式Python方案指南
🎯 方案概述
这个方案将Python环境直接打包到你的Tauri应用中,用户无需安装Python即可使用所有功能。
🚀 快速开始
1. 设置嵌入式Python环境
# 运行设置脚本
scripts\setup_embedded_python.bat
这将:
- 下载Python 3.11嵌入式版本
- 安装必要的依赖(requests, Pillow等)
- 复制你的python_core模块
- 创建启动脚本
- 更新Tauri配置
2. 测试嵌入式Python
# 测试Python版本
src-tauri\python-embed\python.exe --version
# 测试依赖
src-tauri\python-embed\python.exe -c "import requests, PIL; print('Dependencies OK')"
# 测试python_core模块
src-tauri\python-embed\python.exe -c "import python_core; print('python_core OK')"
3. 启动应用测试
cargo tauri dev
现在应用会自动使用嵌入式Python,无需系统Python环境。
📁 目录结构
设置完成后,你的项目结构如下:
your-project/
├── src-tauri/
│ ├── python-embed/ # 嵌入式Python环境
│ │ ├── python.exe # Python解释器
│ │ ├── python311.dll # Python库
│ │ ├── Lib/ # 标准库
│ │ ├── Scripts/ # pip等工具
│ │ ├── python_core/ # 你的Python模块
│ │ └── python-core.bat # 启动脚本
│ └── tauri.conf.json # 已更新配置
├── python_core/ # 原始Python代码
└── scripts/
├── setup_embedded_python.py
└── setup_embedded_python.bat
🔧 工作原理
执行优先级
Rust代码会按以下优先级选择Python环境:
- 嵌入式Python - 如果
src-tauri/python-embed/python.exe存在 - Sidecar - 如果
mixvideo-python-core.exe存在 - 系统Python - 作为最后的回退选项
环境变量控制
你可以通过环境变量强制使用特定的Python:
# 强制使用系统Python
set MIXVIDEO_FORCE_SYSTEM_PYTHON=1
cargo tauri dev
📦 构建和分发
开发模式
在开发模式下,嵌入式Python位于 src-tauri/python-embed/
生产构建
cargo tauri build
构建时,Tauri会自动将 python-embed 目录打包到最终的可执行文件中。
分发
最终的应用包含:
- 你的Tauri应用
- 完整的Python环境
- 所有Python依赖
- 你的python_core模块
用户无需安装任何额外软件即可运行。
🧪 测试和调试
测试嵌入式Python
# 直接测试
src-tauri\python-embed\python.exe -m python_core.main --module test --action hello
# 测试特定服务
src-tauri\python-embed\python.exe -m python_core.services.template_manager --action get_templates
在应用中测试
- 启动应用:
cargo tauri dev - 访问Python测试页面
- 运行测试 - 应该显示"Using embedded Python for execution"
调试问题
如果遇到问题:
-
检查Python路径:
dir src-tauri\python-embed\python.exe -
检查模块导入:
src-tauri\python-embed\python.exe -c "import sys; print(sys.path)" -
查看日志:
- 控制台会显示使用的Python类型
- 检查错误信息
⚙️ 自定义配置
添加更多依赖
编辑 scripts/setup_embedded_python.py:
dependencies = [
"requests",
"Pillow",
"numpy", # 添加新依赖
"opencv-python", # 添加新依赖
]
然后重新运行设置脚本。
更新Python版本
修改 setup_embedded_python.py 中的下载URL:
python_url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0-embed-amd64.zip"
自定义Python路径
如果需要自定义路径,修改 get_embedded_python_path() 函数。
🎉 优势
对比其他方案
| 方案 | 优势 | 劣势 |
|---|---|---|
| 嵌入式Python | ✅ 无需用户安装 ✅ 版本一致 ✅ 完全控制 |
❌ 包体积较大 ❌ 更新需要重新分发 |
| Sidecar | ✅ 包体积小 ✅ 独立更新 |
❌ 构建复杂 ❌ 依赖管理困难 |
| 系统Python | ✅ 包体积最小 | ❌ 需要用户安装 ❌ 版本不一致 |
适用场景
嵌入式Python特别适合:
- 面向普通用户的应用
- 需要特定Python版本的应用
- 希望简化部署的企业应用
- 不希望依赖外部环境的应用
🔄 维护和更新
更新Python代码
- 修改
python_core/中的代码 - 重新运行设置脚本:
scripts\setup_embedded_python.bat - 测试更改:
cargo tauri dev
更新依赖
- 修改
setup_embedded_python.py中的依赖列表 - 重新运行设置脚本
- 测试新依赖
版本管理
建议在版本控制中:
- ✅ 包含
scripts/setup_embedded_python.py - ✅ 包含
python_core/源代码 - ❌ 排除
src-tauri/python-embed/(太大) - ✅ 在CI/CD中自动运行设置脚本
📋 最佳实践
- 定期更新Python版本 - 保持安全性
- 最小化依赖 - 减少包体积
- 测试多平台 - 确保跨平台兼容性
- 监控包大小 - 避免过度膨胀
- 文档化依赖 - 便于维护
这个方案为你提供了一个完全自包含的Python环境,确保用户体验的一致性和简便性!