无法导入包文件(没有名为...的模块)(Python)
Can't import package file (no module named...) (Python)
我在尝试 运行 代码(来自 CMD)时收到此错误:
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
...和 return 错误的主要 (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
是一个包,为什么它不导入它(看起来)?
更新:尝试输入 from .hog import HOG
然后从 CMD 执行..它打印:
No module named '__main__.hog'; '__main__' is not a package
疯了吗? hog.py
与其他文件一起在主包中。如您所见,它还包含 HOG class.. 无法理解.. 有人可以重现错误吗?
在 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
重要
numbers 是一个 python 标准包
https://docs.python.org/2/library/numbers.html
检查您是否真的没有导入该包或将您的包重命名为更具体的名称。
还有:
看起来 python 无法识别您的包裹。
打开一个pythonshell然后写:
import sys
print sys.path
检查你的号码路径是否存在。
如果没有,您必须添加它。
sys.path.insert(0, "/path/to/your/package_or_module")
您的 train.py 文件已经在包 "numbers" 中,因此您不必导入号码。
试试这个:
from hog import HOG
我在评论中看到它给你 "error (red line)"。
你能更准确一点吗,因为我没有看到那里的错误。
将 from numbers.hog import HOG
更改为 from hog import HOG
,将
更改为 from numbers import dataset
。
您已经在 "numbers" 包中,因此您在导入时无需再次精确。
当您键入 from numbers import dataset
时,Python 将查找包含 dataset.py
文件的包 numbers
(在实际包内)。
如果您的 train.py
在 numbers
包之外,那么您必须在前面加上包名 (numbers
)。
我在尝试 运行 代码(来自 CMD)时收到此错误:
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
...和 return 错误的主要 (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
是一个包,为什么它不导入它(看起来)?
更新:尝试输入 from .hog import HOG
然后从 CMD 执行..它打印:
No module named '__main__.hog'; '__main__' is not a package
疯了吗? hog.py
与其他文件一起在主包中。如您所见,它还包含 HOG class.. 无法理解.. 有人可以重现错误吗?
在 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
重要 numbers 是一个 python 标准包 https://docs.python.org/2/library/numbers.html
检查您是否真的没有导入该包或将您的包重命名为更具体的名称。
还有:
看起来 python 无法识别您的包裹。
打开一个pythonshell然后写:
import sys
print sys.path
检查你的号码路径是否存在。
如果没有,您必须添加它。
sys.path.insert(0, "/path/to/your/package_or_module")
您的 train.py 文件已经在包 "numbers" 中,因此您不必导入号码。
试试这个:
from hog import HOG
我在评论中看到它给你 "error (red line)"。
你能更准确一点吗,因为我没有看到那里的错误。
将 from numbers.hog import HOG
更改为 from hog import HOG
,将
更改为 from numbers import dataset
。
您已经在 "numbers" 包中,因此您在导入时无需再次精确。
当您键入 from numbers import dataset
时,Python 将查找包含 dataset.py
文件的包 numbers
(在实际包内)。
如果您的 train.py
在 numbers
包之外,那么您必须在前面加上包名 (numbers
)。