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.]]])
这篇博客记录了在Python环境中遇到ImportError: DLL load failed的问题,通过卸载并重新安装torchvision为0.7.0版本解决了问题。详细步骤包括:使用pip卸载旧版本torchvision,从特定网址下载适用于Windows和CPU的torchvision whl文件,然后使用pip安装。验证安装成功后,展示了能正常运行的代码示例。
2615

被折叠的 条评论
为什么被折叠?



