ImportError: No module named ... in Colab google

ImportError: No module named ... in Colab google

我正在学习教程 here(使用自定义数据集在 Google Colab 中进行对象检测)。笔记本的第一行是 git tensorflow 模型的克隆:

!git clone --quiet https://github.com/tensorflow/models.git

之后,他们设置了 PYTHONPATH 变量以确保我们可以导入模型。

os.environ['PYTHONPATH'] += ':/content/models/research/:/content/models/research/slim/'

如果我在这个阶段尝试导入模型

from nets import inception_resnet_v2 

我收到错误:

ImportError: No module named nets

我检查了网络文件夹和 nets/inception_resnet_v2.py 文件(在 models/research/slim 文件夹中)。我怀疑它与 colab 命名约定有关,因为 pwd 命令给出:

/root/models/research

我在上面的命令中用内容替换了根目录,但它也不起作用。有人 here posted a similar question but the only answer refers to tensorflow issue 1832 这不是这里的问题。有人可以帮忙吗?

编辑:操作系统是 Linux-4.14.79+-x86_64-with-Ubuntu-18.04-bionic

解决方案取决于您的操作系统,Linux 或 Windows。已经有人问过同样的问题:tutorialTensorflow object detection: ImportError: No module named nets. 如果您使用 Windows,更改 PYTHONPATH 可能不起作用。这是一个尝试。 首先,运行 文件 setup.py.

python setup.py build
python setup.py install

它可能会给你一个警告error: could not create 'build'(因为文件已经存在)。因为在您 git 克隆的内容中有一个名为 "build" 的文件。但是,命令 "build" 和 "install" 需要创建一个名为 "build" 的新文件夹。不知道"build"这个文件是做什么用的,所以我选择把文件移动到另一个目录,用上面的命令,就可以了。

Python 进程在启动时读取 PYTHONPATH 的值,因此在进程已经 运行 时修改该环境变量不会更改该进程查找包的位置。您应该改为调整 sys.path:

的值
import sys
sys.path.extend(['/content/models/research/', '/content/models/research/slim/'])
%cd /content/models/research/slim
!python setup.py build
!python setup.py install
%cd /content/models/research/deeplab

这样做让我解决了...