Bokeh与Google App Engine兼容吗?

时间:2017-01-22 15:06:43

标签: python google-app-engine numpy bokeh

我一直在研究这个Udacity web dev course,并希望尝试使用this example将简单的散景图嵌入到网页中。运行dev_appserver.py会出现错误:

ERROR    2017-01-22 14:35:30,358 wsgi.py:263]
Traceback (most recent call last):
  File "C:\Users\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform
\google_appengine\google\appengine\runtime\wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "C:\Users\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform
\google_appengine\google\appengine\runtime\wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "C:\Users\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform
\google_appengine\google\appengine\runtime\wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\main.py", line 2, in <module>
    from bokeh.plotting import figure
  File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\lib\bokeh\plotting\__init__.py", line 2, in <module
>
    from ..document import Document; Document
  File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\lib\bokeh\document.py", line 45, in <module>
    from .core.json_encoder import serialize_json
  File "C:\Users\Google Drive\Udacity web development 2017\udacit
y-cs253\bokeh\1_docs_example\lib\bokeh\core\json_encoder.py", line 53, in <modul
e>
    NP_MS_DELTA = np.timedelta64(1, 'ms')
TypeError: function takes at most 1 argument (2 given)
INFO     2017-01-22 14:35:30,571 module.py:806] default: "GET / HTTP/1.1" 500 -

我可能错了,但上述错误与this相结合表明Bokeh需要NumPy&gt; 1.6.1。具体来说,json_encoder.py似乎需要NumPy&gt; 1.6.1。

然而Google App Engine only supports NumPy1.6.1。这是否意味着Bokeh实际上与GAE不兼容?

的app.yaml:

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app

libraries:
- name: jinja2
  version: latest
- name: numpy
  version: "1.6.1"

2 个答案:

答案 0 :(得分:1)

  

这是否意味着Bokeh与GAE实际上不兼容?

我想说这是对最近版本的一个相当准确的评估,例如Bokeh 0.12.4。似乎NumPy 1.7.1要求一直回到项目的开头。然而,有一段时间Bokeh对NumPy的依赖程度较低,所以你可能会对旧版本的Bokeh运气更好,1)没有安装NumPy,或者2)安装了较旧的GAE NumPy。我不能肯定地陈述这一点,你只需要试着看(YMMV)。

我可以说Bokeh核心团队中的AFAIK没有人使用过GAE,所以没有人知道NumPy的限制就不足为奇了。也许可以放宽NumPy版本以包含1.6.1。我不确定,这需要一些调查,并且无法保证它是可行的。我们当然可以尝试考虑它,因为时间和资源允许,所以我鼓励你在Bokeh project issue tracker上提出问题。另一个合理的行动是请求GAE更新他们的白名单,因为NumPy 1.6.1在这一点上相当古老。

答案 1 :(得分:0)

我试图在Google App Engine Flex上使用bokeh服务器,该服务器没有原始问题中引用的numpy版本限制。但是,即使使用更新的numpy,我仍然无法使其正常工作。最终,我在Google的问题跟踪器上找到了this 10 year old open issue。看起来Google App Engine缺少针对标准和灵活环境的Web套接字支持。由于bokeh服务器使用websocket进行通信,因此这可能是您看到失败的另一个原因。

有一个Google日期为2018年7月23日的评论,内容为:

  

大家好,我们在Flex Websockets Beta发布中取得了稳步的进展,并将很快推出。

     

Standard的Websocket至少需要一年的时间。我会在这里继续进行更新,因为我们会在时间表上更加清晰。

因此,很快就会有希望在App Engine上使用bokeh应用程序。