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

嵌入Python的C++代码运行报错:ImportError: cannot import name _remove_dead_weakref

解决嵌入C++的Python代码运行时ImportError: cannot import name _remove_dead_weakref问题

从你的描述来看,这个问题大概率是Python版本升级后,C++嵌入代码没有正确链接到新的Homebrew Python 2.7.14_2库,或者运行时加载了旧版本的Python模块/库导致的。下面是具体的排查和解决步骤:

1. 确认编译时使用的是正确的Python配置参数

先手动执行python-config --ldflags和python-config --cflags,检查输出内容是不是指向Homebrew的Python 2.7.14_2路径(比如/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7)。

然后打开你的Makefile,确保其中的CFLAGS、LDFLAGS完全使用这两个命令的输出,而不是之前旧版本的缓存值。比如:

CFLAGS += $(shell python-config --cflags)
LDFLAGS += $(shell python-config --ldflags)

2. 清理旧编译产物,重新编译

旧的目标文件或链接缓存可能还绑定着旧版本的Python库,执行以下命令彻底重建:

make clean
make

3. 检查可执行文件的链接依赖

用otool工具查看你的C++程序实际链接的Python库路径:

otool -L ./your_executable_name

在输出里找到Python相关的条目,确认路径是/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/Python,而不是系统自带的Python(/System/Library/Frameworks/Python.framework)或者旧版本的Homebrew Python路径。

如果路径不对,说明编译时没有正确链接新库,回到步骤1检查Makefile配置,重新编译。

4. 验证Python环境本身是否正常

先排除Python安装的问题:直接在终端运行python,然后输入import weakref,如果这一步就报错,说明Homebrew的Python 2.7.14_2安装有问题,尝试重新安装:

brew uninstall python@2
brew install python@2

安装完成后再次验证import weakref是否正常。

5. 检查运行时的库加载路径

macOS的补充更新可能调整了动态库加载规则,确保你的程序能找到Homebrew的Python库。可以查看程序的rpath设置:

otool -l ./your_executable_name | grep -A 5 LC_RPATH

确认输出中包含/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib,如果没有,可能需要在编译时手动添加rpath参数到LDFLAGS里:

LDFLAGS += -Wl,-rpath,/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib

按照以上步骤逐一排查,应该能解决这个导入错误。

内容的提问来源于stack exchange,提问作者A. Drew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:38:33