You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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:

  1. 先更新系统所有包,避免版本不兼容:
    pacman -Syu
    
    (如果更新过程中终端自动关闭,重新打开UCRT64终端再跑一遍pacman -Syu直到更新完成)
  2. 安装所有适配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的库路径不匹配,肯定出问题。

如果还是有问题的排查方向

  1. 确认打开的是正确的UCRT64终端:检查终端标题是否有「UCRT64」字样,别不小心打开了MSYS或者CLANG64的终端。
  2. 检查环境变量优先级:在UCRT64终端里运行echo $PATH,确保/ucrt64/bin在输出的最前面,这样系统会优先用MSYS2的工具和DLL。
  3. 彻底重装相关包:如果之前有残留的旧版本,先卸载再重装:
    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问题了,有其他细节问题随时说!

火山引擎 最新活动