程序bug及工具使用记录

1.问题一

项目场景:DLL load failed while importing _errors

windows系统下
python3.8
使用anaconda获取包h5py时,其他包也可能会有此问题
使用pycharm运行程序

问题描述:

出现DLL load failed while importing _errors: 找不到指定的程序,ImportError字样。 我的程序是针对h5py包,出现from . import _errors此语句错误。

原因分析:

1.直接百度该错误得到的解决方法是重新安装包,失败了。
2.找到_errors.pyd或者是**.pyd,也就是报错的那个语句所用到的文件,发现是dll库缺失。
3.一般是由于自己之前做个什么操作影响了系统的dll库,特别是之前引用python包时可以使用,但现在无法使用了。

解决方案:

1.可以使用用dependency walker查看xxx.pyd依赖的DLL,然后将所有DLL放入xxx.pyd所在目录。
2.直接使用“dll修复工具.exe”自动修复,此外,在后来的实验中发现conda安装的修复无效,pip安装后再修复可运行。

2.问题二 TypeError: pic should be Tensor or ndarray

项目场景:

Python3.7 云平台 pytorch torchvision
在深度学习使用torchvision.datasets.ImageFolder(train_path, train_transformer)载入数据时

问题描述:

报错主要是TypeError: pic should be Tensor or ndarray. Got <class ‘PIL.Image.Image’>.
也就是图片未被转换成Tensor,或者是ndarray,而现在我们需要Tesnsor。

Traceback (most recent call last):
  File "mnt/Projects/baseline_cloud/src/train_model.py", line 281, in <module>
    main(parser.parse_args())
  File "mnt/Projects/baseline_cloud/src/train_model.py", line 183, in main
    train_model(model, criterion, args, optimizer, train_loader, valid_loader)
  File "mnt/Projects/baseline_cloud/src/train_model.py", line 212, in train_model
    trainer.train(train_loader, optimizer)
  File "/mnt/Projects/baseline_cloud/src/utils/trainers.py", line 31, in train
    for i, inputs in enumerate(data_loader, 1):
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 517, in __next__
    data = self._next_data()
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 557, in _next_data
    data = self._dataset_fetcher.fetch(index)  # may raise StopIteration
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/mnt/Projects/baseline_cloud/src/utils/preprocessor.py", line 19, in __getitem__
    return self._get_single_item(indices)
  File "/mnt/Projects/baseline_cloud/src/utils/preprocessor.py", line 23, in _get_single_item
    img_path, label = self.img_paths_label[index]
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torchvision/datasets/folder.py", line 180, in __getitem__
    sample = self.transform(sample)
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torchvision/transforms/transforms.py", line 60, in __call__
    img = t(img)
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torchvision/transforms/transforms.py", line 179, in __call__
    return F.to_pil_image(pic, self.mode)
  File "/root/miniconda3/envs/myconda/lib/python3.7/site-packages/torchvision/transforms/functional.py", line 219, in to_pil_image
    raise TypeError('pic should be Tensor or ndarray. Got {}.'.format(type(pic)))
TypeError: pic should be Tensor or ndarray. Got <class 'PIL.Image.Image'>.

原因分析:

torchvision.datasets.ImageFolder(train_path, train_transformer)主要是使用transformer将PILImage转换成了Tensor,但是我自定义的transformer为:
train_transformer = T.Compose([
        T.ToPILImage(),
        T.RandomHorizontalFlip(),  # 水平翻转
        T.RandomRotation(10),  # 随机旋转10度
        T.ToTensor(),
        normalizer,
    ])

可以看到最后一步是将前面的数据转成Tensor。
所以怀疑是T.ToPILImage()出现问题,画蛇添足了。去掉T.ToPILImage()后能成功。


解决方案:

一般是Transformer转换步骤有问题,transformer中没有T.ToTensor(),加上此语句。如果存在重复步骤(像如我的T.ToPILImage())去掉。

3.问题三 Pentaho与mysql驱动

问题描述:

Pentaho按照Pentaho的下载与安装及其简单实用安装后连接mysql时报错。

1.显示缺少驱动
下载mysql对应驱动复制到data-integration\lib下即可
mysql5.1.47connector
版本问题参考MySQL 5.7 等高版本关于JDBC驱动的几个问题

2.显示错误
The last packet successfully received from the server was 2 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.

部分参考Communications link failure 原因:The last packet successfully received from the server

这个问题是我碰到的问题,mysql5.7.32,驱动选择5.1.47是报错,后来想到当时是使用installers安装的全套,所以找到C:\Program Files (x86)\MySQL\Connector J 8.0,将mysql-connector-java-8.0.22.jar复制到data-integration\lib然后下一步

3.继续报错
Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed. The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

可能是笔记本的时区与 kettle 框架有冲突,显示无法识别和保持多个时区,在命令行运行

mysql -u root -p

输入密码登录后,设置时区

show variables like '%time_zone%';

set global time_zone='+8:00';

原因分析:

总结还是驱动和mysql的设置问题

解决方案:

参考上述

四.问题四 矩池云jupyter数据集多出无关目录

问题描述:

多出目录致使判断表情类别时数组越界。

解决方案:

多出的目录为系统自带.ipynb_checkpoints,可以到每个分类目录下,使用cd .i +TAB键补全的方式 判断是否存在该目录,有的话rm -rf .ipynb_checkpoints删除

Thanks

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对应版本bug记录清单是一份详细记录软件或应用程序中存在的缺陷或错误的清单。它通常包括缺陷的描述、严重程度、影响范围、重现步骤以及修复状态等信息。这个清单对于软件开发团队和测试团队来说非常重要,它能帮助他们跟踪和管理软件开发过程中的问题。 对应版本bug记录清单主要有以下几个作用: 1. 缺陷追踪:清单中的每个bug都有一个唯一的标识符,可以帮助开发团队和测试团队追踪和管理每个bug的处理过程。他们可以根据清单中的标识符定位和跟踪问题,确保每个bug都得到适当的解决。 2. 问题优先级:清单中的每个bug都会标注其严重程度和影响范围等信息。这样开发团队可以根据bug的严重程度来确定解决bug的优先级,确保关键问题得到及时的修复。 3. 问题分析:清单中对每个bug的描述和重现步骤等信息可以帮助开发团队分析和理解问题的本质。他们可以通过清单中的描述和重现步骤来定位和排除bug,提高修复问题的效率。 4. 版本管理:清单中的每个bug都会记录其修复状态,包括修复的版本号和修复时间。这样开发团队可以追踪和管理每个bug的修复过程,确保在每个版本中都得到修复,提高软件的质量。 总之,对应版本bug记录清单是一个重要的工具,能帮助开发团队和测试团队跟踪、管理和解决软件开发过程中的问题,提高软件的质量和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值