You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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,示例:
    upx --best $(OutDir)YourApp.exe $(OutDir)python38.dll
    
    注:部分DLL压缩后可能运行异常,需测试验证。
  • Enigma Virtual Box:可视化打包工具,添加你的EXE和所有Python依赖文件,选择「合并到单个文件」模式生成最终打包文件,操作门槛较低。

内容的提问来源于stack exchange,提问作者levente.nas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:50:41