Can';导入包文件(没有名为…)的模块(Python)
我在尝试运行代码(从CMD)时收到此错误: 这是hog.py文件的Can';导入包文件(没有名为…)的模块(Python),python,module,packages,Python,Module,Packages,我在尝试运行代码(从CMD)时收到此错误: 这是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.pix
代码
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
…和返回错误的main(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()
我不明白为什么它给我模块包上的错误<代码>数字
是一个包,为什么它不导入它呢(看起来)
更新:尝试从.hog导入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:对于感兴趣的人来说,这是一个重要的项目
numbers是一个python标准包
检查您是否真的要导入该软件包,或者将您的软件包重命名为更具体的名称
此外:
看起来python可能无法识别您的包
打开python shell并编写:
import sys
print sys.path
检查您的号码路径是否存在
如果它不在那里,你必须添加它
sys.path.insert(0, "/path/to/your/package_or_module")
您的train.py文件已经在包“number”中,因此您不必导入数字
请尝试以下方法:
from hog import HOG
我在评论中看到它给了您“错误(红线)”。
你能说得更准确些吗,因为我看不出有错误。
将从numbers.hog import hog
更改为从hog import hog
和
将从numbers import dataset
更改为import dataset
您已经在“数字”包中,因此在导入时不必再次精确
当您从数字导入数据集键入时,Python将查找包含dataset.py
文件的包numbers
(在实际包中)
如果您的train.py
在numbers
包之外,则必须在前面输入包名(numbers
)。是否尝试将此行“from numbers.hog import hog”替换为“from hog import hog”?这两个文件毕竟都在同一个目录中。它给我这样写的错误(红线)…给我返回“无法导入名称hog”。。但是它接受它作为原始“from numbers.hog import hog”mm python的修改。python不识别您的包,我更新了我的答案我更新了我的答案。检查是否未导入python标准编号包,并将包重命名/添加到python路径。打印各种python路径以及“DetectNumber\numbers”文件夹/包。我的意思是,我已经将这个项目路径添加到变量主路径(Python的…)中,这太奇怪了…我认为Python正在尝试导入官方数字包。请将您的包裹重新命名为其他物品。请原谅我,我不是英国人,我不理解“用红线强调”和哪个错误?---也有可能我说错了。。。好的,下划线..只需从hog import hog处输入内容,不要输入其他答案或评论中所说的任何内容(仅供参考)。即使代码用红线强调,您也能运行程序吗?如果是,请尝试这样做。给出错误-->ModuleNotFoundError:在CMD中没有名为'numdetect'的模块,在IDE中是用法:train.py[-h]-d DATASET-m MODEL train.py:error:需要以下参数:-d/--DATASET,-m/--MODEL
我不知道您的IDE是什么,因此我无法在这方面帮助您。请删除代码中的“import numdetect”行。
from hog import HOG