ubuntu环境下Pytorch安装及No module named 'torch._C'问题解决

近日,发现很多代码都是基于Pytorch来写的,为了进行测试和学习,于是进行了安装。

安装过程算是比较简单,直接从官网上下载源码,https://github.com/pytorch,然后选择从源码来进行安装。(说是可以直接从WHL文件来安装,只不过没有找到。)

安装过程的步骤:

git clone https://github.com/pytorch/pytorch pip install -r requirements.txt(实质上这一步只需要安装pyyaml)。 sudo python setup.py install

这样就可以实现顺利安装。安装后的截图如下:

不过,为了测试torch的python版本是否可用的时候,直接上来就报了个错。

Python 3.6.0 (default, Jan 16 2017, 12:12:55) 
[GCC 6.3.1 20170109] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.6/site-packages/torch/__init__.py", line 45, in <module>
    from torch._C import *
ModuleNotFoundError: No module named 'torch._C'
官网上对此有一些说明:https://github.com/pytorch/pytorch/issues/574,即下面的这段话。
Yeah, so you can see that there's _C.cpython-35m which means it will be loaded only by Python 3.5. As a quick hack you could try renaming
 _C, _dl, and _thnn/_THNN to regular .so files (without that cpython-version-artch-platform part, just _C.so). But it's a hack, we don't provide further support if it fails

根据上面的这段话,也进行了ls -ll 查看:

omnisky@omnisky:/usr/local/lib/python3.6/site-packages/torch$ ls autograd                             lib               storage.py backends                             multiprocessing   _tensor_docs.py _C.cpython-36m-x86_64-linux-gnu.so   nn                tensor.py cuda                                 optim             _tensor_str.py distributed                          __pycache__       _thnn _dl.cpython-36m-x86_64-linux-gnu.so  serialization.py  _torch_docs.py functional.py                        _six.py           utils __init__.py                          sparse            _utils.py legacy                               _storage_docs.py  version.py

发现_C, _dl两个so文件的文件名都太长了,需要进行修改。

采用cp 的方式复制两个文件:

omnisky@omnisky:/usr/local/lib/python3.6/site-packages/torch$ sudo cp _C.cpython-36m-x86_64-linux-gnu.so _C.so omnisky@omnisky:/usr/local/lib/python3.6/site-packages/torch$ sudo cp _dl.cpython-36m-x86_64-linux-gnu.so _dl.so

然后,再重新import,果然顺利成功!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏非著名程序员

Android Studio你不知道的调试技巧

? 写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Eval...

330100
来自专栏FreeBuf

如何用0day漏洞黑掉西部数据NAS存储设备

我们以入侵和破解设备为乐,今天,要向大家展示的是近期我们对西部数据(Western Digital )网络存储设备(NAS)的漏洞发现和入侵利用过程。点击阅读原...

28490
来自专栏信安之路

通过POC来学习漏洞的原理

本文介绍的是 easyFTPServer 1.7.0.2 ‘Http’ remote Buffer Overflow 的漏洞执行流程,通过已知的 POC 来推断...

19300
来自专栏Golang语言社区

从websocket看go的应用

Go是互联网时代的通用编程语言。这样它就和命令行时代的C语言、图示界面时代的C++、以及互联网早期的Java语言等有不同的侧重。它强调保持自身的精巧和独立,从而...

32060
来自专栏FreeBuf

Oracle Advanced Support系统SQL注入漏洞挖掘经验分享

Oracle Advanced Support系统SQL注入漏洞分析 一年多前我在客户的一个外部环境中执行渗透测试,任何外部环境渗透测试的重要步骤之一就是挖掘出...

30570
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第二十天 Redis学习【悟空教程】

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686

20350
来自专栏枕边书

请求合并哪家强

工作中,我们常见的请求模型都是请求-应答式,即一次请求中,服务给请求分配一个独立的线程,一块独立的内存空间,所有的操作都是独立的,包括资源和系统运算。我们也知道...

11020
来自专栏Python数据科学

Python爬虫之模拟登录wechat

不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈、关注的新闻或是公众号、还有个人信息或是隐私都被绑定在了一起。既然它这么重要,如果我们可以利用爬虫模拟...

3.5K20
来自专栏Java3y

COW奶牛!Copy On Write机制了解一下

触及到知识的盲区了,于是就去搜了一下copy-on-write写时复制这个技术究竟是怎么样的。发现涉及的东西蛮多的,也挺难读懂的。于是就写下这篇笔记来记录一下我...

25830
来自专栏为数不多的Android技巧

Android Studio你不知道的调试技巧

写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Evaluat...

8910

扫码关注云+社区

领取腾讯云代金券