2017-03-05 1 views
1

Après avoir fait des recherches sur ce site et d'autres, je crée le sujet. J'ai créé un module comme:Python module import NameError

module.py

def function(var1, var2): 
    ... 
    return(var3) 

Et le code principal est:

main.py:

import module 
var4 = module.function(a, b) 

Quand je lance le fichier principal IDLE , J'ai l'erreur suivante:

NameError: name 'function' is not defined 

J'ai aussi essayé: main.py:

from module import function 
var4 = function(a, b) 

et a obtenu un module has no attribute 'function'

ce que quelqu'un a une idée de ce qui ne va pas? Lorsque j'ai essayé d'importer des constantes à partir du même module, j'ai également eu ce type d'erreur

+1

Etes-vous sûr de vouloir importer depuis le bon 'module.py'? Que dit 'module .__ file__'? Qu'en est-il de 'dir (module)'. – jonrsharpe

+0

Pour ce problème particulier, il serait utile d'obtenir plus de détails sur la structure de votre projet. Vous aurez montré un exemple plus réaliste de ce que vous vivez. Il est difficile de déterminer exactement ce qui ne va pas avec un exemple arbitraire comme celui-ci. – idjaw

+0

module .__ file__ ne retourne pas le bon fichier ... est-il possible que python essaie d'importer un module à partir de modules standard qui a le même nom que le mien? il y a le résultat pour 'dir (module)': '['CommandCompiler', 'InteractiveConsole', 'InteractiveInterpreter', '__all__', '__builtins__', '__cached__', '__doc__', '__fichier__', '__loader__' , '__name__', '__package__', '__spec__', 'argparse', 'compile_command', 'interact', 'sys', 'traceback'] ' Je suppose que ce sont les différents fichiers contenus dans le module, mais par conséquent ce n'est pas le bon, je n'ai pas codé ceux-là ^^ – Dawindz

Répondre

1

Votre module a probablement le même nom que l'un des modules intégrés de Python. Essayez de le renommer et de voir si vous obtenez toujours l'erreur.

EDIT: import code provoque l'interpréteur pour importer le module natif de Python appelé code au lieu de celui que vous avez écrit, provoquant l'erreur NameError.

+0

cela a fonctionné, merci! même si j'ai le même problème, avec une erreur d'attribut, pour un autre module dont le nom n'appartient pas à python standard lib ... EDIT: erreur: 'AttributeError: module 'decodeur' n'a pas d'attribut 'decode'' – Dawindz

+0

Si vous N'avez pas compris, s'il vous plaît poster la ligne exacte de code qui cause l'erreur. Je pense que 'decode' est une fonction et que vous l'appelez sans parenthèses (' decodeur.decode' au lieu de 'decodeur.decode()'). – stybl