首页 > 解决方案 > 为什么 Utils.py 中的库没有加载?

问题描述

我无法确定导致此问题的原因。基本上,我正在开发一个在 conda 环境中运行的 jupyter notebook。我创建了一个文件“Myutils.py”,它有一些辅助函数供以后使用。该文件保存在与笔记本相同的文件夹中。考虑到我已经在笔记本和 Myutils 文件中进行了必要的导入,我仍然遇到名称错误:

在笔记本中:

第一个单元格:

import cv2
import pytesseract
import numpy as np
import os
import matplotlib.pyplot as plt
from MyUtils import *
%matplotlib inline

然后:

img = cv2.imread('./yolov5/runs/detect/exp/crops/address/422.jpg')
plt.imshow(remove_noise(img))

产生此错误消息:

NameError                                 Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_17892/550149434.py in <module>
      1 img = cv2.imread('./yolov5/runs/detect/exp/crops/address/422.jpg')
----> 2 plt.imshow(remove_noise(img))

~\Documents\Machine Learning\Projects\CIN OCR\MyUtils.py in remove_noise(image)
      5 def get_grayscale(image):
      6     return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
----> 7 
      8 # noise removal
      9 def remove_noise(image):

NameError: name 'cv2' is not defined

而且,在 Myutils.py 中,我们有:

import cv2
import numpy as np

# get grayscale image
def get_grayscale(image):
    return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

标签: pythonimport

解决方案


通过这样做from Myutils import *,您将覆盖较早的import cv2.

我不知道这是否是导致您的错误的原因,但import *除非您确定没有冲突,否则值得避免 - 参见例如:

为什么“import *”不好?


推荐阅读