MSYS2 UCRT64环境下安装PyGObject+GTK3时出现ImportError问题求助
MSYS2 UCRT64环境下安装PyGObject+GTK3时出现ImportError问题求助
老哥,你这个问题我之前帮好几个朋友排查过,核心原因就是混用了MSYS2 UCRT64环境和Windows系统的Python/pip,这俩是完全独立的环境,凑一起肯定出DLL找不到的问题!给你一步步捋清楚解决办法:
第一步:先清理冲突的安装
你在Windows cmd里用pip install pygobject装的是适配系统Python的版本,和MSYS2 UCRT64的环境完全不兼容,先把它卸掉:
- 打开Windows cmd,运行:
pip uninstall -y pygobject
第二步:回到MSYS2 UCRT64终端重新适配安装
一定要用MSYS2专门的UCRT64终端(桌面快捷方式里的「MSYS2 UCRT64」,打开后终端标题会显示UCRT64),不要用Windows的cmd/powershell操作MSYS2的Python:
- 先更新系统所有包,避免版本不兼容:
(如果更新过程中终端自动关闭,重新打开UCRT64终端再跑一遍pacman -Syupacman -Syu直到更新完成) - 安装所有适配UCRT64的依赖包,直接用pacman装就够了,完全不需要用pip装pygobject:
pacman -S --needed mingw-w64-ucrt-x86_64-python-gobject mingw-w64-ucrt-x86_64-gtk3 mingw-w64-ucrt-x86_64-gobject-introspection mingw-w64-ucrt-x86_64-python-cairo
第三步:验证安装是否成功
在UCRT64终端里直接运行测试命令,验证能不能正常加载GTK3:
python -c "import gi; gi.require_version('Gtk', '3.0'); from gi.repository import Gtk; print('GTK3 加载成功!')"
如果能输出成功提示,那再跑你的GTK3示例代码就没问题了。
几个要注意的坑(别再踩了!)
- 绝对不要混用MSYS2各环境和Windows系统的Python/pip:MSYS2的每个环境(UCRT64、CLANG64等)都有自己独立的依赖库和工具链,路径都是隔离的,Windows的pip包找不到MSYS2的DLL,必然报错。
- 不要用pip装pygobject:MSYS2的pacman已经提供了完全适配当前环境的预编译包,pip装的通用版本和MSYS2的库路径不匹配,肯定出问题。
如果还是有问题的排查方向
- 确认打开的是正确的UCRT64终端:检查终端标题是否有「UCRT64」字样,别不小心打开了MSYS或者CLANG64的终端。
- 检查环境变量优先级:在UCRT64终端里运行
echo $PATH,确保/ucrt64/bin在输出的最前面,这样系统会优先用MSYS2的工具和DLL。 - 彻底重装相关包:如果之前有残留的旧版本,先卸载再重装:
pacman -Rns mingw-w64-ucrt-x86_64-python-gobject mingw-w64-ucrt-x86_64-gtk3 pacman -S mingw-w64-ucrt-x86_64-python-gobject mingw-w64-ucrt-x86_64-gtk3
这样应该就能解决你遇到的ImportError问题了,有其他细节问题随时说!




