模块未找到错误:没有名为“object_detection”的模块。

28
我尝试在git url下的目标检测中运行train.py。

https://github.com/tensorflow/models/tree/master/research/object_detection

然而,出现了以下错误。

ModuleNotFoundError: No module named 'object_detection'

因此,我尝试通过编写以下代码来解决问题。
import sys

sys.path.append('/home/user/Documents/imgmlreport/inception/models/research/object_detection')
from object_detection.builders import dataset_builder

这个问题目前还没有解决。

目录结构如下所示。

~/object_detection/train.py

~/object_detection/builders/dataset_bulider.py

以下是完整的错误信息:

/home/user/anaconda3/lib/python3.6/site-packages/h5py/init.py:34: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated.

In future, it will be treated as np.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters

Traceback (most recent call last):

File "train.py", line 52, in import trainer

File"/home/user/Documents/imgmlreport/inception/models/research/object_detection/trainer.py", line 26, in from object_detection.builders import optimizer_builder

ModuleNotFoundError: No module named 'object_detection'

如何导入模块?


目录的绝对路径已经被检查。 - 송준석
是的。请尝试一下。 - Anuj Gautam
它仍然无法工作。错误信息等于大写消息。 - 송준석
我发现这是一个很简单的问题。我只需创建自己的setup.py和setup目录文件,然后它就可以工作了。 - 송준석
请详细说明。您创建了哪些目录,并在setup.py文件中添加了什么? - Anuj Gautam
显示剩余3条评论
8个回答

96

尝试安装打包的Tensorflow目标检测库

pip install tensorflow-object-detection-api

这也是解决“string_int_label_map_pb2”导入错误的方法。 - Julio S.
3
仅适用于TensorFlow 1.x版本,不适用于2.x版本。 - hyun woo Cho
@hyunwooCho 我在Windows 10上解决了这个问题,方法是将Tensorflow/models/research/object_detection复制粘贴到AppData/../object_detection的包目录中。我还在努力弄清楚如何在Colab中做同样的事情。 - Aaron John Sabu

4
这个错误的原因是安装了object_detection库,所以其中一个可行的解决方案是在models/research目录下运行以下命令:
    sudo python setup.py install

如果这样的解决方案不起作用,请在models/research目录中逐一执行以下命令:
    export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
    sudo python setup.py install

希望这会奏效。我在使用export_inference_graph.py创建模型时也遇到了同样的问题。这对我有用。

1
感谢您的建议。如果有人在使用sudo python setup.py install命令时遇到错误,请考虑使用此方法:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2.md#python-package-installation。 - Cloud Cho
感谢@CloudCho。如果您在安装pycocotools时遇到问题,可能需要安装python3-dev软件包。 - steepestascent

3
每次在该环境下打开新终端时,您需要导出环境变量。请注意,在以下命令中,每个pwd周围都有反引号,因为这可能不会显示在命令中。反引号与波浪线键相同,无需按下Shift键(美式键盘)。来自tensorflow/models/research/。
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

你是指tensorflow/models/research目录下的内容是什么? - mastisa

1

尝试以下操作: python setup.py build python setup.py install


0

在object_detection文件夹中有许多模块,而我已经在其父目录(research文件夹)中创建了setup.py来导入所有这些模块。

from setuptools import find_packages
from setuptools import setup


REQUIRED_PACKAGES = ['Pillow>=1.0', 'Matplotlib>=2.1', 'Cython>=0.28.1']

setup(
    name='object_detection',
    version='0.1',
    install_requires=REQUIRED_PACKAGES,
    include_package_data=True,
    packages=[p for p in find_packages() if p.startswith('object_detection')],
    description='Tensorflow Object Detection Library',
)

0

最后,如果你已经按照这里的所有步骤并且已经到了无计可施的地步……请确保你运行的文件(你知道,那个包含源代码的文件)没有命名为object_detection.py - 这将导致它无法被搜索为一个模块。

当然,我从来没有做过像这样的事情,以至于我在Stack Overflow上添加了一个令人尴尬的答案……


0

在导入目标检测之前,您确实使用了“sys.path.append()”,所以我很惊讶您会遇到这个错误!

请检查您在sys.path.append()中使用的路径是否正确。

嗯,唯一且显而易见的答案是模块的路径没有正确添加。

除了这里提到的各种方法外,以下是一种可以将“object_detection”路径永久添加到PYTHONPATH变量中的方法。

如果您正在使用Linux系统,则可以按照以下步骤进行:

进入主目录。按Ctrl + H显示隐藏文件。您将看到一个名为“.bashrc”的文件。使用代码编辑器(我使用的是Visual Studio)打开此文件。

在.bashrc文件的最后一行中,添加以下行:

export PYTHONPATH=/your/module/path:/your/other/module/path:your/someother/module/path

然后在代码编辑器中按“保存”。由于“.bashrc”是一个“只读”文件,编辑器会弹出相同的弹窗。在弹窗中还有一个选项,上面写着:“尝试使用sudo”。点击此按钮,现在您可以开始了。

所有模块现在都已永久添加到PYTHONPATH中。这意味着您无需每次打开终端并启动会话时运行sys.path.append!

以下是我按照所述步骤进行操作时没有错误的屏幕截图:

enter image description here

试试这个。希望能有所帮助。


-1
我必须执行以下操作:
sudo pip3 install -e . (ref)
sudo python3 setup.py install

系统:
操作系统:Ubuntu 16.04,Anaconda(我猜这就是为什么我需要使用pip3python3,即使我使用Python 3.8创建了虚拟环境)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接