[英]running z3 on google app engine
我想找到一個純Python的z3軟件包,它將幫助我在Google App Engine中運行z3。 我已經在本地運行以下python測試,它會運行:
from z3 import *
x = Real('x')
y = Real('y')
s = Solver()
s.add(x + y > 5, x > 1, y > 1)
print s.check()
print s.model()
但它需要以下文件才能正常工作:z3.pyc,z3consts.pyc,z3core.pyc,z3printer.pyc,z3types.pyc,libz3.dylib。 我是通過從z3 codeplex站點下載的文件構建z3來獲得這些文件的。
因此,將這些文件放在我的應用程序ID文件夾中的“ lib”文件夾中后,我嘗試對main.py(由Google提供的“ hello world”程序)進行以下修改:
import webapp2
from random import randint
import sys
sys.path.insert(0, 'lib')
from z3 import *
class MainHandler(webapp2.RequestHandler):
def get(self):
x = Real('x')
y = Real('y')
s = Solver()
s.add(x + y > 5, x > 1, y > 1)
self.response.write(s.check())
self.response.write(s.model())
self.response.write('Hello world! '+str(randint(7,14)))
app = webapp2.WSGIApplication([('/', MainHandler)], debug=True)
在App Engine啟動器中運行的這段代碼為我提供了一個空白頁面,並且沒有錯誤消息。
如果我注釋掉所有與z3相關的代碼,則會收到世界問候消息,這與預期的一樣。
注意:我已閱讀有關如何包含第三方庫的文章14850853,並已使用BeautifulSoup成功對其進行了測試。 我的問題是關於純python z3庫的可用性。
從谷歌關於沙盒的文檔中,我非常確定* .pyc文件可以,但是我認為這些文件需要工作的(16MB)libz3.dylib不是純python。 是否存在z3的純python版本,或者我錯過了在應用引擎上使用z3的其他方法嗎?
Z3沒有純Python版本。 Z3的所有API(包括Python API)都建立在C API之上,而libz3.dll / .so / .dylib是本機代碼。 我不確定它是否可以與Google App Engine一起使用,但是在過去,我成功地將libz3.dll保存在SQL數據庫的Blob中,當我的應用程序啟動時,它從數據庫獲取並加載了它。
我不確定您打算開發什么應用程序,但是請快速瀏覽一下Z3的許可,以確保在這方面一切正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.