gpt4 book ai didi

python - 无法导入包文件(没有名为...的模块)(Python)

转载 作者:行者123 更新时间:2023-12-01 02:43:42 25 4
gpt4 key购买 nike

我在尝试运行代码(从 CMD)时收到此错误:

ModuleNotFoundError: No module named 'numbers.hog'; numbers is not a package

enter image description here

这是hog.py文件代码...

from skimage import feature

class HOG:
def __init__(self, orientations = 9, pixelsPerCell = (8, 8),
cellsPerBlock = (3, 3), normalize = False):
self.orienations = orientations
self.pixelsPerCell = pixelsPerCell
self.cellsPerBlock = cellsPerBlock
self.normalize = normalize

def describe(self, image):
hist = feature.hog(image,
orientations = self.orienations,
pixels_per_cell = self.pixelsPerCell,
cells_per_block = self.cellsPerBlock,
normalize = self.normalize)

return hist

...以及返回错误的主程序 (train.py)。

from sklearn.svm import LinearSVC
from numbers.hog import HOG
from numbers import dataset
import argparse
import pickle as cPickle


ap = argparse.ArgumentParser()
ap.add_argument("-d", "--dataset", required = True,
help = "path to the dataset file")
ap.add_argument("-m", "--model", required = True,
help = "path to where the model will be stored")
args = vars(ap.parse_args())


(digits, target) = dataset.load_digits(args["dataset"])
data = []

hog = HOG(orientations = 18, pixelsPerCell = (10, 10),
cellsPerBlock = (1, 1), normalize = True)

for image in digits:
image = dataset.deskew(image, 20)
image = dataset.center_extent(image, (20, 20))

hist = hog.describe(image)
data.append(hist)

model = LinearSVC(random_state = 42)
model.fit(data, target)

f = open(args["model"], "w")
f.write(cPickle.dumps(model))
f.close()

我不明白为什么它在模块包上给我错误。 numbers 是一个包,为什么它不导入它(看起来)?

enter image description here

更新:尝试将 from .hog import HOG 然后从 CMD 执行..它打印:

No module named '__main__.hog'; '__main__' is not a package

疯了吗? hog.py 与其他文件一起位于主包中。正如您所看到的,它还包含 HOG 类...无法理解..有人可以重现该错误吗?

在 IDE 控制台中打印:

usage: train.py [-h] -d DATASET -m MODEL
train.py: error: the following arguments are required: -d/--dataset, -m/--model

一旦在 IDE 中执行,这应该是正确的,因为程序必须在 CMD 中运行。

更新2:对于感兴趣的人,这是项目https://github.com/VAUTPL/Number_Detection

最佳答案



fromnumbers.hog import HOG 更改为 from hog import HOG
fromnumbersimportdataset 更改为 importdataset.

您已经位于“numbers”包中,因此导入时无需再次精确。
当您输入 fromnumbersimportdataset 时,Python 将查找包含 dataset.py 文件的包 numbers(在实际包内)。

如果您的 train.py 位于 numbers 包之外,那么您必须将包名称 (numbers) 放在前面。

关于python - 无法导入包文件(没有名为...的模块)(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45412357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com