Pytorch在机器学习领域的学习十分有用,而笔者在安装Pytorch且在cmd和Jupyter上分别调用的过程,遇到了No module named 'torch’与No module named 'torch._C’问题,分别解决后记录下来,供您参考。
Windows 10
Python 3.6.5
Anaconda3 5.2.0(Python 3.6.5)
进入PyTorch官网:PyTorch官网
首先,选择Stable稳定版,并按实际选择OS;
如果您的网络条件较好,选择Conda或Pip方式安装皆可,即只需复制Command部分的代码到Anaconda Prompt或cmd;
由于其在中国大陆的安装包下载缓慢,推荐选择Pip方式并利用安装包来安装。先将Command部分的链接复制到新的浏览器页面,再按照两个条件(以上图为例,分别是:torch == 1.4.0+cpu, torchvision == 0.5.0+cpu),根据您的python版本和OS,分别下载torch和torchvision即可。
比如,按照torch == 1.4.0+cpu, torchvision == 0.5.0+cpu,python 3.6,windows 64的需求,分别下载:
下载后,运行cmd(快捷键Win+R,输入cmd),分别输入如下代码(代码需替换为您的安装包):
pip install C:\Users\XXX\Desktop\torch-1.4.0+cpu-cp36-cp36m-win_amd64.whl
pip install C:\Users\XXX\Desktop\torchvision-0.5.0+cpu-cp36-cp36m-win_amd64.whl
到此安装完成。为了测试安装是否成功,可以在cmd中输入:
若需测试GPU驱动与CUDA的正常,可输入如下代码:
import torch
torch.cuda.is_available()
到此,Pytorch安装成功。
如果您发现在cmd中或Jupyter notebook中显示 No module named ‘torch’、No module named ‘torch_C’,那么您可以继续阅读。
以下情况适用于在cmd中安装成功,在Jupyter notebook中显示No module named ‘torch’。
由于Juypter notebook是在安装Anaconda时安装的,它依赖Anaconda所配置的库路径,而Anaconda所配置的库路径没有包含当前的Python的库路径。
为了查看库路径,可以分别在Jupyter中和cmd中输入:
import sys
print(sys.path)
看看是否有:
若Jupyter notebook的输出结果没有所安装的Python的Lib\site-packages,可以在环境变量(右键 “此电脑" ,点击"属性",点击左侧的“高级系统设置",点击“高级”页面中右下角的"环境变量")中添加PYTHONPATH变量包含它们。
在“环境变量”页面,在 user的用户变量 或 系统变量 点击“新建”按钮,分别输入您的Python及Python的Lib\site-packages路径(Python路径可由上述cmd中输出的sys.path得到,Python的Lib\site-packages路径为:Python路径\Lib\site-packages):
新建用户变量点击确定后,在“环境变量”页面右下角点击确定即可。
回到Jupyter notebook中,重新输出sys.path,如果包括了Python和Python的Lib\site-packages路径后,再尝试
import torch
到此,即可成功在Jupyter notebook中成功导入Pytorch。
如果您发现在cmd中或Jupyter notebook中显示 No module named ‘torch_C’,那么您可以继续阅读。
以下情况适用于在Jupyter notebook中显示No module named ‘torch._C’。
这种情况为导入torch成功(不报错No module named ‘torch’),但报错如下:
报错表示找不到torch的_C模块,即找不到torch包里的
需要注意的是,_C模块中间的cp36-win_amd64(可替换)部分表示其适用的Python版本和OS版本。比如,此图表明该_C模块适用于Python 3.6、Windows 64的情况。
情况1 在cmd中显示安装成功
笔者属于这种情况,但一开始误认为第2种情况。这种情况表明,您的Python所提供的环境(cmd中默认的Python版本)符合_C模块对版本的需求,所以可以成功运行;但您的Anaconda所提供的环境(Jupyter notebook中)可能与您原来的Python版本不一致。
Anaconda所提供的Python环境(在Anaconda Prompt中查看):
cmd中默认的Python版本(在cmd中查看):
比如笔者之前的Anaconda所提供的Python版本为3.7.0,而原来的Python版本为3.6.5,笔者下载的Pytorch适用于Python 3.6环境,故在cmd中成功运行,但在Jupyter notebook中报错。
措施:
①重新下载Anaconda,使其提供的Python版本与原来(默认)的Python版本一致(这种方法笔者亲测有效,结果见上图);
②或者为您的Anaconda重新下载新的Pytorch。
③根据下图(下图回复的是适用于Linux系统、Python 3.5的_C模块)尝试了偷懒的hack:直接把中间部分去掉,即去掉cp36-win_amd64部分,变为_C.pyd,但是尝试失败
情况2 在cmd中也显示 No module named 'torch._C’
在检查完 cmd中、Anaconda中的Python版本与Pytorch的适用环境一致 后,如果仍然不能解决,可以看看链接:https://github.com/pytorch/pytorch/issues/574。
高赞回答:
《PyTorch在Windows下的安装》
《Python 在cmd中import模块成功,但是在jupyter notebook中No module xxx found》
《ModuleNotFoundError: No module named ‘torch._C’》