我正在尝试在python3中运行一个以Z3作为依赖项的程序(导入z3)
我能够安装Z3的不稳定版本(假设支持Python3),但它只为python2.7安装库。
该项目的python scripts/mk_make.py
cd build
make
sudo make install
有人知道如何为Python3安装Z3工作吗?
感谢。
答案 0 :(得分:1)
我不得不修改脚本/ mk_util.py,以便将几行从Python2转换为Python3,并在其他几行中用空格替换tab,之后就可以了!。
似乎有人意外地引入了与Python3不兼容的更改。
我注意到 Leonardo de Moura 关于这一点,他在z3 git repo中做了一个改变。
这是一个以防万一的路径
--- z3-original/scripts/mk_util.py
+++ z3/scripts/mk_util.py
@@ -640,7 +640,7 @@
def is_clang_in_gpp_form(cc):
version_string = subprocess.check_output([cc, '--version'])
- return version_string.find('clang') != -1
+ return str(version_string).find('clang') != -1
def is_CXX_clangpp():
if is_compiler(CXX, 'g++'):
@@ -1485,7 +1485,7 @@
print('Java Compiler: %s' % JAVAC)
else:
global CXX, CC, GMP, FOCI2, CPPFLAGS, CXXFLAGS, LDFLAGS, EXAMP_DEBUG_FLAG
- OS_DEFINES = ""
+ OS_DEFINES = ""
ARITH = "internal"
check_ar()
CXX = find_cxx_compiler()
@@ -1508,7 +1508,7 @@
SLIBEXTRAFLAGS = '%s %s' % (SLIBEXTRAFLAGS,FOCI2LIB)
CPPFLAGS = '%s -D_FOCI2' % CPPFLAGS
else:
- print "FAILED\n"
+ print("FAILED\n")
FOCI2 = False
if GIT_HASH:
CPPFLAGS = '%s -DZ3GITHASH=%s' % (CPPFLAGS, GIT_HASH)
@@ -1536,21 +1536,21 @@
SLIBFLAGS = '-dynamiclib'
elif sysname == 'Linux':
CXXFLAGS = '%s -fno-strict-aliasing -D_LINUX_' % CXXFLAGS
- OS_DEFINES = '-D_LINUX'
+ OS_DEFINES = '-D_LINUX'
SO_EXT = '.so'
LDFLAGS = '%s -lrt' % LDFLAGS
SLIBFLAGS = '-shared'
SLIBEXTRAFLAGS = '%s -lrt' % SLIBEXTRAFLAGS
elif sysname == 'FreeBSD':
CXXFLAGS = '%s -fno-strict-aliasing -D_FREEBSD_' % CXXFLAGS
- OS_DEFINES = '-D_FREEBSD_'
+ OS_DEFINES = '-D_FREEBSD_'
SO_EXT = '.so'
LDFLAGS = '%s -lrt' % LDFLAGS
SLIBFLAGS = '-shared'
SLIBEXTRAFLAGS = '%s -lrt' % SLIBEXTRAFLAGS
elif sysname[:6] == 'CYGWIN':
CXXFLAGS = '%s -D_CYGWIN -fno-strict-aliasing' % CXXFLAGS
- OS_DEFINES = '-D_CYGWIN'
+ OS_DEFINES = '-D_CYGWIN'
SO_EXT = '.dll'
SLIBFLAGS = '-shared'
else:
@@ -1586,7 +1586,7 @@
config.write('SLINK_FLAGS=%s\n' % SLIBFLAGS)
config.write('SLINK_EXTRA_FLAGS=%s\n' % SLIBEXTRAFLAGS)
config.write('SLINK_OUT_FLAG=-o \n')
- config.write('OS_DEFINES=%s\n' % OS_DEFINES)
+ config.write('OS_DEFINES=%s\n' % OS_DEFINES)
if is_verbose():
print('Host platform: %s' % sysname)
print('C++ Compiler: %s' % CXX)