代码之家  ›  专栏  ›  技术社区  ›  lucians

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

  •  1
  • lucians  · 技术社区  · 8 年前

    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

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

    这疯了吗? 与其他文件一起位于主包中。如你所见,它还包含HOG类…无法理解…有人可以重现错误?

    在IDE控制台中打印:

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

    这应该在IDE中执行后立即正确,因为程序必须在CMD中运行。

    https://github.com/VAUTPL/Number_Detection

    3 回复  |  直到 8 年前
        1
  •  2
  •   Zcode    8 年前



    改变 from numbers.hog import HOG from hog import HOG
    from numbers import dataset import dataset .

    您已经在“数字”包中,因此导入时不必再次精确。
    从数字导入数据集 ,Python将查找包 numbers (在实际包内)包含 dataset.py

    如果你的 train.py )之前。

        2
  •  0
  •   lapinkoira    8 年前

    数字是python标准包 https://docs.python.org/2/library/numbers.html

    检查您是否真的要导入该包或 将您的包命名为更具体的名称。

    打开python shell并编写:

    import sys
    print sys.path
    

    检查您的号码路径是否存在。

    sys.path.insert(0, "/path/to/your/package_or_module")
    
        3
  •  0
  •   Zcode    8 年前


    from hog import HOG
    

    我在评论中看到它给了你“错误(红线)”。

    推荐文章