如何在Visual Studio C++项目中使用嵌入式Python并打包至输出exe?
嵌入式Python与Visual Studio C++项目集成及打包步骤
1. 补齐嵌入式Python开发依赖
嵌入式Python压缩包默认不含C开发所需的头文件和库文件,需从同版本(Python 3.8.0 x64)的完整安装包中,复制include和libs文件夹到你的嵌入式Python目录下。之后将该目录(比如ProjectRoot/ThirdParty/PythonEmbed)放到C项目目录中。
2. 配置Visual Studio项目属性
右键项目 → 属性,依次设置:
- VC++目录 → 包含目录:添加嵌入式Python目录下的
include路径 - VC++目录 → 库目录:添加嵌入式Python目录下的
libs路径 - 链接器 → 输入 → 附加依赖项:添加
python38.lib
3. 自动复制依赖文件到输出目录
在项目属性的生成事件 → 后期生成事件中,添加复制命令,将嵌入式Python目录下的所有文件(python38.dll、python38.zip等)同步到EXE输出目录:
xcopy /E /Y "$(ProjectDir)ThirdParty/PythonEmbed/*" "$(OutDir)"
同时修改嵌入式目录下的python38._pth文件,注释掉#import site行,避免加载系统Python的第三方库。
4. 代码层面适配嵌入式环境
初始化Python前,指定嵌入式环境的路径,确保程序优先加载本地依赖:
wchar_t pythonPath[] = L"./python38.zip;./"; Py_SetPath(pythonPath); Py_Initialize(); // 后续Python API调用逻辑
如果代码中用到Py_SetPythonHome,直接设置为当前输出目录即可:
wchar_t pythonHome[] = L"."; Py_SetPythonHome(pythonHome);
5. 打包成单EXE文件
若要将所有依赖合并为单个EXE,可使用以下工具:
- UPX:通过命令行压缩可执行文件及依赖DLL,示例:
注:部分DLL压缩后可能运行异常,需测试验证。upx --best $(OutDir)YourApp.exe $(OutDir)python38.dll - Enigma Virtual Box:可视化打包工具,添加你的EXE和所有Python依赖文件,选择「合并到单个文件」模式生成最终打包文件,操作门槛较低。
内容的提问来源于stack exchange,提问作者levente.nas
相关产品推荐
相关产品推荐

