pip安装PyTorch编译时缺失distributed相关头文件问题求助

问题原因
该问题不是安装错误导致:PyTorch 1.10.x版本的常规pip预编译包默认做了内容裁剪,没有打包distributed模块对应的C++开发头文件,因此torch/csrc路径下找不到对应子目录,编译时自然会报py_rref.h缺失的错误。
解决方案
- 方案1:安装同版本完整开发包
先卸载当前已安装的torch、torchvision、torchaudio包,重新安装时追加--dev参数,拉取对应版本带全量开发头文件的构建包即可。安装完成后再检查对应路径,就能看到完整的distributed目录结构,包含编译需要的py_rref.h文件。安装时保持三个包的版本号、CUDA版本和之前一致即可,不会出现兼容问题。 - 方案2:手动补全对应版本头文件
如果不想重装整个PyTorch,可以获取PyTorch v1.10.1版本的官方源码,把源码中torch/csrc/distributed整个目录完整复制到本地/usr/local/lib/python3.6/dist-packages/torch/include/torch/csrc/路径下。
注意必须严格使用v1.10.1版本的源码文件,不要用其他版本或主分支的代码,否则会因为API定义不匹配触发新的编译错误。 - 方案3:屏蔽分布式模块编译依赖
如果项目本身不需要用到分布式训练、RPC相关功能,直接在编译配置中添加宏定义USE_DISTRIBUTED=0,关闭分布式相关代码逻辑,编译时就不会再查找这个缺失的头文件。
补充提示
Python 3.6已经停止官方维护,PyTorch 1.10是最后一个支持Python 3.6的正式版本,后续如果有C++扩展开发需求,建议升级Python到3.8及以上版本,搭配更高版本的PyTorch,这类预编译包头文件缺失的问题会少很多。
内容的提问来源于stack exchange,提问作者kisisjelly
相关产品推荐
相关产品推荐

