ImportError: DLL load failed: 找不到指定的程序
参考
https://blog.youkuaiyun.com/shuiyixin/article/details/90370588
C:\ProgramData\Anaconda3\python.exe "C:\Program Files\JetBrains\PyCharm 2019.3.1\plugins\python\helpers\pydev\pydevconsole.py" --mode=client --port=61583
import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend(['C:\\Users\\pc\\PycharmProjects\\seq2seq', 'C:/Users/pc/PycharmProjects/seq2seq'])
Python 3.7.5 (default, Oct 31 2019, 15:18:51) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.
PyDev console: using IPython 7.9.0
Python 3.7.5 (default, Oct 31 2019, 15:18:51) [MSC v.1916 64 bit (AMD64)] on win32
runfile('C:/Users/pc/PycharmProjects/seq2seq/RnnSeqLenAndBatchSize.py', wdir='C:/Users/pc/PycharmProjects/seq2seq')
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-e3646211eb52>", line 1, in <module>
runfile('C:/Users/pc/PycharmProjects/seq2seq/RnnSeqLenAndBatchSize.py', wdir='C:/Users/pc/PycharmProjects/seq2seq')
File "C:\Program Files\JetBrains\PyCharm 2019.3.1\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2019.3.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/pc/PycharmProjects/seq2seq/RnnSeqLenAndBatchSize.py", line 6, in <module>
import torchvision.transforms as transforms
File "C:\Program Files\JetBrains\PyCharm 2019.3.1\plugins\python\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\torchvision\__init__.py", line 1, in <module>
from torchvision import models
File "C:\Program Files\JetBrains\PyCharm 2019.3.1\plugins\python\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\torchvision\models\__init__.py", line 11, in <module>
解决办法重装 torchvision
1 卸载
C:\Users\pc>pip uninstall torchvision
Found existing installation: torchvision 0.3.0
Uninstalling torchvision-0.3.0:
Would remove:
c:\programdata\anaconda3\lib\site-packages\torchvision
c:\programdata\anaconda3\lib\site-packages\torchvision-0.3.0-py3.7.egg-info
Proceed (y/n)? y
Successfully uninstalled torchvision-0.3.0
2 安装torchvision0.7.0 查看torch用的是1.6.0版本,而对应得torchvision==0.7.0
直接用pip install torchvision==0.7.0 用的是清华的镜像,报告找不到对应包,可能是清华镜像地址比较老原因
直接下载轮子安装
轮子地址
https://download.pytorch.org/whl/torch_stable.html
安装命令(切到whl的下载目录中执行)
pip install "torchvision-0.7.0+cpu-cp37-cp37m-win_amd64.whl"
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Processing c:\users\pc\downloads\torchvision-0.7.0+cpu-cp37-cp37m-win_amd64.whl
Requirement already satisfied: pillow>=4.1.1 in c:\programdata\anaconda3\lib\sit
e-packages (from torchvision==0.7.0+cpu) (6.2.1)
Requirement already satisfied: numpy in c:\programdata\anaconda3\lib\site-packag
es (from torchvision==0.7.0+cpu) (1.17.4)
Requirement already satisfied: torch==1.6.0 in c:\programdata\anaconda3\lib\site
-packages (from torchvision==0.7.0+cpu) (1.6.0)
Requirement already satisfied: future in c:\programdata\anaconda3\lib\site-packa
ges (from torch==1.6.0->torchvision==0.7.0+cpu) (0.18.2)
Installing collected packages: torchvision
Successfully installed torchvision-0.7.0+cpu
验证
import torchvision as tv
print(tv.__version__)
0.7.0+cpu
#然后执行py代码并附结果如下,表明安装的该包可以正常运行
# -*- coding: utf-8 -*- import torch import torch.utils.data as Data import torch.nn as nn import torchvision.transforms as transforms import numpy as np ### Demo dataset data_ = [[1, 10, 11, 15, 9, 100], [2, 11, 12, 16, 9, 100], [3, 12, 13, 17, 9, 100], [4, 13, 14, 18, 9, 100], [5, 14, 15, 19, 9, 100], [6, 15, 16, 10, 9, 100], [7, 15, 16, 10, 9, 100], [8, 15, 16, 10, 9, 100], [9, 15, 16, 10, 9, 100], [10, 15, 16, 10, 9, 100]] ### Demo Dataset class class DemoDatasetLSTM(Data.Dataset): """ Support class for the loading and batching of sequences of samples Args: dataset (Tensor): Tensor containing all the samples sequence_length (int): length of the analyzed sequence by the LSTM transforms (object torchvision.transform): Pytorch's transforms used to process the data """ ## Constructor def __init__(self, dataset, sequence_length=1, transforms=None): self.dataset = dataset self.seq_len = sequence_length self.transforms = transforms ## Override total dataset's length getter def __len__(self): return self.dataset.__len__() ## Override single items' getter def __getitem__(self, idx): if idx + self.seq_len > self.__len__(): if self.transforms is not None: item = torch.zeros(self.seq_len, self.dataset[0].__len__()) item[:self.__len__()-idx] = self.transforms(self.dataset[idx:]) return item, item else: item = [] item[:self.__len__()-idx] = self.dataset[idx:] return item, item else: if self.transforms is not None: return self.transforms(self.dataset[idx:idx+self.seq_len]), self.transforms(self.dataset[idx:idx+self.seq_len]) else: return self.dataset[idx:idx+self.seq_len], self.dataset[idx:idx+self.seq_len] ### Helper for transforming the data from a list to Tensor def listToTensor(list): tensor = torch.empty(list.__len__(), list[0].__len__()) for i in range(list.__len__()): tensor[i, :] = torch.FloatTensor(list[i]) return tensor ### Dataloader instantiation # Parameters seq_len = 3 batch_size = 2 data_transform = transforms.Lambda(lambda x: listToTensor(x)) dataset = DemoDatasetLSTM(data_, seq_len, transforms=data_transform) data_loader = Data.DataLoader(dataset, batch_size, shuffle=False) for data in data_loader: x, _ = data print(x) print('\n')
#结果如下
tensor([[[ 1., 10., 11., 15., 9., 100.],
[ 2., 11., 12., 16., 9., 100.],
[ 3., 12., 13., 17., 9., 100.]],
[[ 2., 11., 12., 16., 9., 100.],
[ 3., 12., 13., 17., 9., 100.],
[ 4., 13., 14., 18., 9., 100.]]])
tensor([[[ 3., 12., 13., 17., 9., 100.],
[ 4., 13., 14., 18., 9., 100.],
[ 5., 14., 15., 19., 9., 100.]],
[[ 4., 13., 14., 18., 9., 100.],
[ 5., 14., 15., 19., 9., 100.],
[ 6., 15., 16., 10., 9., 100.]]])
tensor([[[ 5., 14., 15., 19., 9., 100.],
[ 6., 15., 16., 10., 9., 100.],
[ 7., 15., 16., 10., 9., 100.]],
[[ 6., 15., 16., 10., 9., 100.],
[ 7., 15., 16., 10., 9., 100.],
[ 8., 15., 16., 10., 9., 100.]]])