簡體   English   中英

在Google App Engine上運行z3

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM