Грешка в атрибута, z3 няма атрибут Ints

Правя символно изпълнение в Python, използвайки модула z3. В някаква част от кода exec се използва за извикване на извикваща функция z3. Кодовият фрагмент е както следва:

def can_be_satisfied(n):
 path = get_path(n)
 my_names, path =to_single_assignment(path)
 s1 = "%s = z3.Ints('%s')" % (', '.join(my_names), ' '.join(my_names))
 exec(s1, globals(), locals())
 s = z3.Solver()
 s2 = 's.add(%s)' % (', '.join([tosrc(i) for i in path]))
 print(s2)
 exec(s2, globals(), locals())
 if s.check() == z3.sat:
    print("sat:", s.model())
    return True
 else:
    return False

Както видях в документацията на z3 модул за Python (http://www.cs.tau.ac.il/~msagiv/courses/asv/z3py/guide-examples.htm), съдържа атрибута "Ints". Въпреки това, след изпълнението на програмата, следната грешка се генерира от фрагмента:

File "code/symbolic_concolic_egt/symbolic/symbolic.py", line 69, in can_be_satisfied
    exec(s1, globals(), locals())
File "<string>", line 1, in <module>     
AttributeError: module 'z3' has no attribute 'Ints'

Всяко предложение как да се реши този проблем е добре дошло. Благодаря ви предварително


person Christin    schedule 30.12.2017    source източник
comment
Импортирахте ли Z3 модула в низа, който се предава на exec? Като цяло exec не е добър начин за изпълнение на Z3 заявки, тъй като е много строго ограничен; например наличното пространство в стека е абсолютно малко.   -  person Christoph Wintersteiger    schedule 30.12.2017
comment
Благодаря ви за предложението. Току-що се опитах да импортирам модула z3 вътре в низа и все още получавам грешката. Ще търся алтернатива на exec   -  person Christin    schedule 30.12.2017
comment
Как инсталирахте Z3? Опитайте pip install z3-solver (от този отговор: stackoverflow.com/a/57866935 )   -  person Eric Stdlib    schedule 22.09.2020