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

使用MSYS2+CMake+Make构建Pybind11库后Python导入失败求助

问题原因与解决办法

错误原因

你用MSYS2的MinGW GCC编译生成的.pyd文件依赖MinGW的运行时动态库(比如libstdc++-6.dll、libgcc_s_seh-1.dll),但你运行的Python(大概率是Windows官方版)的环境PATH里没有这些库的路径,导致加载失败。另外,CMake可能默认关联了MSYS2内部的Python,和你外部运行的Python版本/环境不匹配也可能加剧这个问题。

解决办法

办法1:用MSYS2内置的Python运行脚本

打开MSYS2的MinGW64终端(不是MSYS终端),切换到.pyd和test.py所在的目录,直接执行:

python test.py

MSYS2的环境已经包含了MinGW运行时库的路径,能正常加载依赖。

办法2:添加MinGW路径到系统环境变量

找到你的MSYS2安装目录下的mingw64/bin路径(比如C:\msys64\mingw64\bin),将其添加到系统环境变量PATH中,然后重启命令提示符,再运行python test.py即可。

办法3:静态编译依赖库(推荐,生成独立可运行的pyd)

修改CMakeLists.txt,在pybind11_add_module语句后添加静态链接选项,让编译后的.pyd不依赖外部MinGW运行时库:

cmake_minimum_required(VERSION 3.3)

project(example)

find_package(Python COMPONENTS Interpreter Development)
find_package(pybind11 CONFIG)

pybind11_add_module(example example.cpp)
# 添加静态链接选项
target_link_options(example PRIVATE -static-libgcc -static-libstdc++)

然后重新执行构建命令:

cd buildmingw
cmake .. -G "MinGW Makefiles"
mingw32-make

生成的新.pyd文件可以直接在Windows官方Python环境下运行。

额外注意

确保你运行的Python版本和CMake找到的Python版本一致(比如都是3.11),可以在MSYS2终端里用python --version查看内置Python版本,避免版本不兼容导致的问题。

内容的提问来源于stack exchange,提问作者flori10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:05:07