itertools pas défini lorsqu'il est utilisé dans le module

- Je enregistrer mes fonctions personnalisées dans un module distinct que je peux appeler quand j'en ai besoin. Une de mes nouvelles fonctions utilise itertools, mais je reçois une erreur de nom.

NameError: name 'itertools' is not defined

C'est vraiment bizarre. Je peux import itertools dans la console, mais quand j'appel ma fonction, j'obtiens une erreur de nom. Habituellement, je peux utiliser les fonctions d'autres bibliothèques (pandas, sklearn, etc.) à l'intérieur d'une fonction personnalisée à l'amende juste aussi longtemps que je peux importer la bibliothèque de première.

MAIS si je l'import itertools dans la console, copier-coller de ma fonction dans la console, puis appeler la fonction, il fonctionne très bien.

Ça fait de moi un fou, mais je pense que peut-être je suis juste de ne pas comprendre les règles de modules ou de quelque chose.

voici la fonction que j'utilise dans le module. c'est tout simplement copier-collé à partir de l'un des sklearn exemples:

import itertools    
def plot_confusion_matrix(cm, classes,
                              normalize=False,
                              title='Confusion matrix',
                              cmap=plt.cm.Blues):
        import itertools
        plt.imshow(cm, interpolation='nearest', cmap=cmap)
        plt.title(title)
        plt.colorbar()
        tick_marks = np.arange(len(classes))
        plt.xticks(tick_marks, classes, rotation=45)
        plt.yticks(tick_marks, classes)

        if normalize:
            cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
            print("Normalized confusion matrix")
        else:
            print('Confusion matrix, without normalization')

        print(cm)

        thresh = cm.max() / 2.
        for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
            plt.text(j, i, cm[i, j],
                     horizontalalignment="center",
                     color="white" if cm[i, j] > thresh else "black")

        plt.tight_layout()
        plt.ylabel('True label')
        plt.xlabel('Predicted label')

J'ai essayé de l'importer à l'intérieur de la fonction, à l'intérieur du module, et à l'intérieur le fichier où je fais appel à tout avec pas de chance. Si je l'importer dans la console de son amende. Même après qu'il a été importé dans la console, si je l'exécute à l'intérieur du dossier, je suis en train de travailler sur de nouveau, il donne la même erreur.

  • Importation itertools dans le même module de fonction de votre vie
  • Vous devez import itertools dans le fichier qui va l'utiliser. Si vous importez ce fichier, il dispose de son propre espace de noms.
  • J'ai essayé de l'importer dans mon module, mais il a encore produit une erreur. J'ai aussi essayé de l'importer dans le fichier à l'aide de il - encore une erreur.
  • Si vous avez essayé de l'importation de itertools à la fois des modules et encore obtenu l'erreur, fournir un minimum de travail exemple de code pour nous de regarder
  • Votre exemple de code n'a pas d'import itertools. Assurez-vous que votre exemple est un un minimum de reproductibles exemple.
  • Je l'ai pris. Mise à jour dans le post original
  • Vous devriez essayer de l'importer avec une minuscule i, import ... Et c'est OK pour importer de l'extérieur de la fonction, il suffit qu'elle soit dans le même fichier.
  • Toujours rien. C'est trop bizarre.
  • Alors, êtes-vous positif que lorsque vous appelez la fonction ci-dessus (exactement!), vous obtenez au-dessus de la NameError? Êtes-vous sûr que ça vient de cette fonction, et pas ailleurs?

InformationsquelleAutor Adam | 2016-12-20