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

问题描述:

我receving这个错误当我尝试运行(从CMD)的代码:无法导入包文件(没有名为模块...)(Python)的

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

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

+0

您是否尝试将“从numbers.hog import HOG”替换为“from hog import HOG”?毕竟这两个文件都在同一个目录中。 –

+0

它给我错误(红线)这样写... – Link



变化from numbers.hog import HOGfrom hog import HOG
变化from numbers import datasetimport 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 

检查你的电话号码路径是存在的。

如果不在那里,您必须添加它。

​​
+0

给我回'不能导入名称猪'..但它接受它作为原来的修改“从numbers.hog导入HOG” – Link

+0

毫米蟒蛇不承认你的包裹,我更新我的答案 – lapinkoira

+0

我更新了我的答案。检查你是否不导入Python标准号码包并重命名/添加你的包到Python路径 – lapinkoira


你train.py文件已在包中的“数字”,这样你就不必进口数字。

试试这个:

from hog import HOG 

我在评论看到它给你 “的错误(红线)”。
你能更精确吗,因为我没有在那里看到错误。

+0

强调用红线...是的,它仍然给出错误... – Link

+0

对不起,我不是英语,我不明白“强调与红线”,哪个错误? – Zcode

+0

https://s2.postimg.org/ct1fgbund/stressed.jpg ----这也有可能我说错了......好吧,下划线.. – Link