web-dev-qa-db-fra.com

from utils import label_map_util Erreur d'importation: aucun module nommé utils

J'essaie d'exécuter le programme de type object_detection.ipynb mais il s'agit d'un programme python normal (.py). Cela fonctionne très bien, mais lors de l'exécution dans le dossier ..models/research/object_detection, mais le problème principal est lorsque j'essaie d'exécuter ce code dans un autre répertoire avec sys.append approprié, le message d'erreur suivant s'affiche:

Traceback (appel le plus récent en dernier):

Fichier "obj_detect.py", ligne 20, dans 

from utils import label_map_util

ImportError: Aucun module nommé utils

Si j'essaie d'importer le fichier à partir du dossier ..models/research/object_detection dans un programme python situé dans un répertoire différent, il se produit alors plus d'erreurs, comme suit:

Traceback (appel le plus récent en dernier):

Fichier "classify_image.py", ligne 10, dans 

import object_dt

Fichier "/home/saikishor/Tensorflow_Models/models/research/object_detection/object_dt.py", ligne 18, dans 

from utils import label_map_util

Fichier "/home/saikishor/Tensorflow_Models/models/research/object_detection/utils/label_map_util.py", ligne 22, dans 

from object_detection.protos import string_int_label_map_pb2

ImportError: Aucun module nommé object_detection.protos

Comment résoudre ce problème?

5
saikishor

Il se peut que votre dossier object_detection ne se trouve pas sur votre chemin. Python ne sait donc pas où chercher les fichiers.

vous pouvez vérifier cela depuis python avec

import sys

sys.path

si tel est le problème, vous pouvez le résoudre en

sys.path.insert(0, 'path/to/your/object_detection')
5
warped

J'ai vu le même problème. c'est parce que le fichier string_int_label_map_pb2.py n'existe pas.

1.vous devez installer protobuf.

https://github.com/google/protobuf/releases
  1. cd votre chemin vers object_detection 

    protoc objet_detection/protos/string_int_label_map.proto --python_out =.

vous trouverez le fichier string_int_label_map_pb2.py dans 'object_detection\protos'

  1. ce sera ok, s'il y a toujours un problème, vous pouvez ajouter votre dossier object_detection à PYTHONPATH.
1
david_liu

Vous devez télécharger le protocole version 3.3 (déjà compilé). Le protocole utilisé dans le répertoire bin pour exécuter cette commande est le suivant:

tensorflow$ mkdir protoc_3.3
tensorflow$ cd protoc_3.3
tensorflow/protoc_3.3$ wget wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.Zip
tensorflow/protoc_3.3$ chmod 775 protoc-3.3.0-linux-x86_64.Zip
tensorflow/protoc_3.3$ unzip protoc-3.3.0-linux-x86_64.Zip
tensorflow/protoc_3.3$ cd ../models/research/
tensorflow/protoc_3.3$ /home/saikishor/tensorflow/protoc_3.3/bin/protoc object_detection/protos/*.proto --python_out=.

Cela fonctionnera, espérons-le!

0
saikishor

dans le dossier python * ./ site-packages, vous pouvez voir le dossier utils . par défaut, lorsque nous exécutons "from utils import label_map_util", la recherche label_map_util dans python. */site-packages/dossier utils.

cette erreur peut être résolue en modifiant le répertoire .__ ou en copiant un fichier de tensorflow/models/utils vers python *. */site-packages/utils 

0
Lakshmi_narayana