无法导入包文件(没有名为模块...)(Python)的
我receving这个错误当我尝试运行(从CMD)的代码:无法导入包文件(没有名为模块...)(Python)的
ModuleNotFoundError: No module named 'numbers.hog'; numbers is not a package
下面是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
是一个包,它为什么不导入它(好像它)?
UPDATE:试图把from .hog import HOG
,然后从CMD..It打印执行:
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
变化from numbers.hog import HOG
到from hog import HOG
和
变化from numbers import dataset
到import dataset
。
您已经在“数字”包中,因此您在导入时不必再精确一次。
当您键入from numbers import dataset
时,Python将查找包含dataset.py
文件的包numbers
(在实际包中)。
如果您的train.py
不在numbers
包中,那么您必须先放置包名(numbers
)。
重要 号是一个Python标准封装 https://docs.python.org/2/library/numbers.html
检查,如果你是不是真的导入一个包或重命名你的包装更具体的名称。
另外:
它可能看起来像蟒蛇犯规认识你的包。
打开一个python壳和写:
import sys
print sys.path
检查你的电话号码路径是存在的。
如果不在那里,您必须添加它。
给我回'不能导入名称猪'..但它接受它作为原来的修改“从numbers.hog导入HOG” – Link
毫米蟒蛇不承认你的包裹,我更新我的答案 – lapinkoira
我更新了我的答案。检查你是否不导入Python标准号码包并重命名/添加你的包到Python路径 – lapinkoira
您是否尝试将“从numbers.hog import HOG”替换为“from hog import HOG”?毕竟这两个文件都在同一个目录中。 –
它给我错误(红线)这样写... – Link