python cuda编译出现undefined symbol: THPVariableClass

本文详细解析了ImportError:undefined symbol错误的根源,涉及channelnorm_cuda.so与torch模块的动态链接问题,并提供了解决方案,即确保torch在所有其他模块之前被导入,以解决动态链接器中的符号未定义问题。

针对ImportError: /.local/lib/python3.6/site-packages/channelnorm_cuda-0.0.0-py3.6-linux-x86_64.egg/channelnorm_cuda.cpython-36m-x86_64-linux-gnu.so: undefined symbol: THPVariableClass

解决方案:保证导入的模块,import torch在最前边。顺序如下:
import torch
import your_extension
原因:import torch first, 这将解决 the dynamic linker中的some symbols。
它与setuptools没有任何关系,它只是一个动态链接问题。torch模块是一个共享(动态)库,它定义了扩展库中未解决的某些符号。为了使这些符号可用,必须在使用库(your_extension)之前导入包含符号(torch)的库,以便动态链接器可以将符号与来自torch库的符号相匹配。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值