AttributeError: module 'itertools' has no attribute 'imap'

Peter Otten __peter__ at web.de
Thu Aug 8 11:29:35 EDT 2019


Larry Martell wrote:

> I have some code that is using the pyke package
> (https://sourceforge.net/projects/pyke/). That project seems fairly
> dead, so asking here.
> 
> There is a pyke function that returns a context manager with an
> iterable map. In py2.7 I did this:
> 
> from pyke import knowledge_engine
> vasculopathy_engine =
> knowledge_engine.engine((rule_base_source_folder,
> (compiled_rule_base_folder)))
> with vasculopathy_engine.prove_goal(...) as presentationGen:
>     for vals, plan in presentationGen:
> 
> But in py3 that fails with: AttributeError: module 'itertools' has no
> attribute 'imap'

In Python 3 the map() builtin is "lazy", so you can use that instead.

> I tried converting presentationGen to a list but get the same error.
> 
> How can I make this work in py3?

The problem is in the project rather than in your code -- you have to port 
pyke to Python 3 before you can use it. If you want to go that route you may 
give the 2to3 tool a try:

$ cat demo.py
import itertools

for i in itertools.imap(abs, [-1, 1]):
    print i
$ 2to3 -w demo.py 
[...]
$ cat demo.py
import itertools

for i in map(abs, [-1, 1]):
    print(i)
$





More information about the Python-list mailing list