2017-04-04 1 views
0

Je courais le script simple suivant de la book et obtenir l'erreur suivanteerreur Python: Aucun module nommé mrjob.job

from mrjob.job import MRJob 

class MRWordCount(MRJob): 
def mapper(self, _, line): 
    for word in line.split(): 
    yield(word, 1) 
def reducer(self, word, counts): 
    yield(word, sum(counts)) 

if __name__ == '__main__': 
MRWordCount.run() 

En utilisant cygwin64 sur Windows 10, il renvoie l'erreur suivante:

[email protected] /cygdrive/c/Users/User001/PycharmProjects/TestProject 
$ python preparation.py input.txt 
Traceback (most recent call last): 
    File "preparation.py", line 1, in <module> 
    from mrjob.job import MRJob 
ImportError: No module named mrjob.job 

Voici ce que je faisais:

  1. I installé à l'aide mrjob pip install mrjob et installé avec succès.

  2. J'ai vérifié que les fichiers existent dans site-packages/mrjob et le fichier job.py existe aussi et je peux ouvrir le fichier et voir les méthodes dans ce fichier. J'utilise Pycharm, donc quand j'essaie d'importer mrjob, cela me donne aussi la syntaxe complétée par pycharm qui reconnaît où est le fichier.

Maintenant, je ne comprends pas pourquoi il est impossible d'obtenir ce module. Quelqu'un peut-il aider? Merci

+2

Vérifiez si vous avez installé plusieurs versions python –

+0

Vérifiez si vous avez un fichier 'mrjob.py' local ou un répertoire' mrjob' avec un fichier '__init __ .py', en masquant le paquet. –

+0

J'ai récemment installé des fenêtres donc il n'y a pas d'autre version de python. J'ai les fichiers '__init __. Py' et' mrjob.py' aussi dans les paquets – muazfaiz

Répondre

0

De The Module Search Path.

When a module named spam is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.path . sys.path is initialized from these locations:

  • the directory containing the input script (or the current directory).
  • PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
  • the installation-dependent default.

Ce qui signifie que vous devez éviter de nommer vos modules avec le même nom que standard bibliothèque ou intégré noms de modules. Donc vous feriez mieux de renommer votre nom de paquet ou nom de fichier script au lieu de mrjob.py.